Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

A propos des & et des " : erreur dans le code

6 réponses
Avatar
Gundt
Bonjour à tous,

J'ai une erreur qui est classique dans mon code : "Trop peu de
paramètres. 3 attendus".

sous Access 97 :

A chaque fois Eric m'avait conseillé d'utiliser les & " " & etc ...

Mais ici, c'est pareil, cela donne une erreur.

J'ai bien regardé dans l'aide mais il y en a tellement de sortes
différentes :
Questions :
à quoi sert cette fonction ? Et comment s'appelle-t-elle ? J'aimerai
comprendre son fonctionnement ?

voici maintenant le code qui me donne l'erreur : "Trop peu de paramètres
attendus".

sql2 =
"DELETE [LIGNES BL TEMP].*, [BL TEMP].CodeClient,
Format([DateSortie_temp],'mm') " _
& "AS Expr1, Format([DateSortie_temp],'yyyy') AS Expr2 " _
& " FROM [BL TEMP] INNER JOIN [LIGNES BL TEMP] ON [BL TEMP].[N°BL_temp]
= " _
& "[LIGNES BL TEMP].[N°BL_temp] WHERE ((([BL
TEMP].CodeClient)=[Forms]![Choix_cli_fact_perso]![CodeClient]) " _
& "AND
((Format([DateSortie_temp],'mm'))=[Forms]![Choix_cli_fact_perso]![Mois]) " _
& "AND
((Format([DateSortie_temp],'yyyy'))=[Forms]![Choix_cli_fact_perso]![Année]));"

C'est une requête. Je sais qu'il faut placer les " et les & mais où les
placer correctement ?
J'ai essayé à différents endroits mais à chaque fois j'obtiens un erreur
de syntaxe.

Merci d'avance.

Gundt

6 réponses

Avatar
Eric
Bonjour,

Le formulaire est ouvert ?

Essaies :
sql2 = "DELETE [LIGNES BL TEMP].*, [BL TEMP].CodeClient," _
& " Format([DateSortie_temp],'mm')" _
& " AS Expr1, Format([DateSortie_temp],'yyyy') AS Expr2 " _
& " FROM [BL TEMP] INNER JOIN [LIGNES BL TEMP] ON " _
& " [BL TEMP].[N°BL_temp] = [LIGNES BL TEMP].[N°BL_temp] " _
& " WHERE [BL TEMP].CodeClient=" _
& [Forms]![Choix_cli_fact_perso]![CodeClient] _
& " AND Format([DateSortie_temp],'mm')=" _
& [Forms]![Choix_cli_fact_perso]![Mois] _
& " AND Format([DateSortie_temp],'yyyy')=" _
& [Forms]![Choix_cli_fact_perso]![Année] & ";"

Bonjour à tous,

J'ai une erreur qui est classique dans mon code : "Trop peu de
paramètres. 3 attendus".

sous Access 97 :

A chaque fois Eric m'avait conseillé d'utiliser les & " " & etc ...

Mais ici, c'est pareil, cela donne une erreur.

J'ai bien regardé dans l'aide mais il y en a tellement de sortes
différentes :
Questions :
à quoi sert cette fonction ? Et comment s'appelle-t-elle ? J'aimerai
comprendre son fonctionnement ?

voici maintenant le code qui me donne l'erreur : "Trop peu de paramètres
attendus".

sql2 > "DELETE [LIGNES BL TEMP].*, [BL TEMP].CodeClient,
Format([DateSortie_temp],'mm') " _
& "AS Expr1, Format([DateSortie_temp],'yyyy') AS Expr2 " _
& " FROM [BL TEMP] INNER JOIN [LIGNES BL TEMP] ON [BL TEMP].[N°BL_temp]
= " _
& "[LIGNES BL TEMP].[N°BL_temp] WHERE ((([BL
TEMP].CodeClient)=[Forms]![Choix_cli_fact_perso]![CodeClient]) " _
& "AND
((Format([DateSortie_temp],'mm'))=[Forms]![Choix_cli_fact_perso]![Mois])
" _
& "AND
((Format([DateSortie_temp],'yyyy'))=[Forms]![Choix_cli_fact_perso]![Année]));"


C'est une requête. Je sais qu'il faut placer les " et les & mais où les
placer correctement ?
J'ai essayé à différents endroits mais à chaque fois j'obtiens un erreur
de syntaxe.

Merci d'avance.

Gundt


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Gundt
Re,

Le formulaire est ouvert ?
Oui,


Essaies :
sql2 = "DELETE [LIGNES BL TEMP].*, [BL TEMP].CodeClient," _
& " Format([DateSortie_temp],'mm')" _
& " AS Expr1, Format([DateSortie_temp],'yyyy') AS Expr2 " _
& " FROM [BL TEMP] INNER JOIN [LIGNES BL TEMP] ON " _
& " [BL TEMP].[N°BL_temp] = [LIGNES BL TEMP].[N°BL_temp] " _
& " WHERE [BL TEMP].CodeClient=" _
& [Forms]![Choix_cli_fact_perso]![CodeClient] _
& " AND Format([DateSortie_temp],'mm')=" _
& [Forms]![Choix_cli_fact_perso]![Mois] _
& " AND Format([DateSortie_temp],'yyyy')=" _
& [Forms]![Choix_cli_fact_perso]![Année] & ";"


Ok. Ca marche. :-)

Mais je remarque que sur les lignes 7, 9 et 11 (si on compte 11 lignes),
il n'y a pas de " après le & en début de ligne ni même après le
CodeClient de la ligne 7, le [Mois] de la ligne 9.

Pourquoi cette écriture ? Je ne comprends pas cette syntaxe ? Comment
faut-il l'écrire ou la comprendre ?

Merci beaucoup à Eric.

Gundt

Avatar
Eric
re


Essaies :
sql2 = "DELETE [LIGNES BL TEMP].*, [BL TEMP].CodeClient," _
& " Format([DateSortie_temp],'mm')" _
& " AS Expr1, Format([DateSortie_temp],'yyyy') AS Expr2 " _
& " FROM [BL TEMP] INNER JOIN [LIGNES BL TEMP] ON " _
& " [BL TEMP].[N°BL_temp] = [LIGNES BL TEMP].[N°BL_temp] " _
& " WHERE [BL TEMP].CodeClient=" _
& [Forms]![Choix_cli_fact_perso]![CodeClient] _
& " AND Format([DateSortie_temp],'mm')=" _
& [Forms]![Choix_cli_fact_perso]![Mois] _
& " AND Format([DateSortie_temp],'yyyy')=" _
& [Forms]![Choix_cli_fact_perso]![Année] & ";"
Mais je remarque que sur les lignes 7, 9 et 11 (si on compte 11 lignes),

il n'y a pas de " après le & en début de ligne ni même après le
CodeClient de la ligne 7, le [Mois] de la ligne 9.



Pour les lignes 7, 9 & 11, tu passes à la chaine SQL les valeurs
contenues dans les contôles CodeClient, Mois, Annee du formulaire
Choix_cli_fact_perso donc il ne fait pas les encadrer de ".

Un exemple est plus simple.
Supposons que j'ai une variable nommée intAnnee contenant une année (par
exemple 2007)
si j'écris le SQL ainsi:
strSQL="Select * from MaTable Where Year(DateNaissance)=intAnnee;"
lors de l'appel du SQL tu auras le message: 'Trop peu de paramètre : 1
attendu' car le moteur ne trouve pas dans la table de champ nommé intAnnee.

Si tu avais écris le SQL sous cette forme:
strSQL="Select * from MaTable Where Year(DateNaissance)=" & intAnnee & ";"
la chaine strSQL que tu crées par concaténation (opérateur &) contiendrait:
Select * from MaTable where Year(DateNaissance) 07;

C'est pourquoi je t'avais dit de faire afficher dans la fenêtre
Exécution le contenu des variables sql (ici dans l'exemple strSQL).

Maintenant quand le SQL est long à écrire, on le fait sur 'plusieurs
simili-lignes' en utilisant le caractère de continuité _ (underscore),
question de lisibilité.

Par exemple, on ecrira:
strSQL = "Select LeNom, LePrenom, Adresse, Cp, Ville, LeTel " _
& "From LaTable1 Inner Join LaTable2 " _
& "On Latable1.ChpCommun=LaTable2.ChpCommun " _
& "Where Year(DateNaissance)=" & intAnnee & ";"

PS : Attention, lors de la concaténation, aux espaces nécessaires pour
que le moteur SQL retrouve ses 'mots' et identifie champs et valeurs.

Est-ce plus clair ?
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Gundt
Re,


[...]


PS : Attention, lors de la concaténation, aux espaces nécessaires pour
que le moteur SQL retrouve ses 'mots' et identifie champs et valeurs.

Est-ce plus clair ?
Oui, c'est maintenant plus clair.

Merci beaucoup pour cette explication.

Je vais me la garder sous le coude au cas où j'en aurais encore besoin.

En tout cas, Eric : merci pour ta patience et ton dévouement.

Gundt

Avatar
Gundt
Re,


[...] > la chaine strSQL que tu crées par concaténation (opérateur &)
contiendrait:
Select * from MaTable where Year(DateNaissance) 07;

C'est pourquoi je t'avais dit de faire afficher dans la fenêtre
Exécution le contenu des variables sql (ici dans l'exemple strSQL).


C'est où cette fenêtre exécution. Tu veux dire la fenêtre du module
quand on clique sur le petit triangle bleu (comme le signe lecture du
magnétoscope) ?
Et en mettant msgbox "strSQL" ?

C'est cela ?

merci encore.

Gundt

Avatar
Eric
Dans l'interface VB, pour afficher la fenêtre Exécution :
- Menu Affichage |Fenêtre Exécution ou CTRL + G
La fenêtre s'affiche sous le module en général.
et tu mets Debug.Print strSQL après avoir construit ton sql

Re,


[...] > la chaine strSQL que tu crées par concaténation (opérateur &)
contiendrait:
Select * from MaTable where Year(DateNaissance) 07;

C'est pourquoi je t'avais dit de faire afficher dans la fenêtre
Exécution le contenu des variables sql (ici dans l'exemple strSQL).


C'est où cette fenêtre exécution. Tu veux dire la fenêtre du module
quand on clique sur le petit triangle bleu (comme le signe lecture du
magnétoscope) ?
Et en mettant msgbox "strSQL" ?

C'est cela ?

merci encore.

Gundt


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr