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

erreur de compilation dans vba97

13 réponses
Avatar
Gundt
bonjour à tous,

J'ai une erreur du même genre que celle discutée justement dans ce forum
ces jours derniers : "Trop de paramètres : 2 attendus".
J'ai donc regardé le fil de ce post. J'ai vu que cela pouvait porter sur
une erreur de nom. J'ai donc changé tous les noms de champs pour qu'il
n'y en ait aucun de semblable.

Comme l'a conseillé Eric, j'ai essayé de faire debug.print sql mais j'ai
un message d'erreur dans la ligne de la chaîne sql (alors que cette
requête fonctionne très bien en mode requête quand je la lance
manuellement).
Quand je clique sur compiler, il m'affiche erreur de compilation et
s'arrête sur le 1er " de mm. Comme il y en a déjà un au début de la
chaîne, je suppose qu'il prend cela pour la fin de la chaîne sql.

La voici :
Dim db As Database
Dim r As Recordset, s As Recordset, f As Form
Dim suivnum1 As String, suivnum2 As String, suivnum As String, nouvnum
As String
Dim numero As Long
Dim codecli1 As Long
Dim mm As Byte
Dim yyyy As Long
Dim sql1 As String


Set db = DBEngine(0)(0)

' ----------------------------
sql1 = "SELECT DISTINCTROW [BL TEMP].CodeClient, CLIENTS.Codetab,
CLIENTS.[Code service], SERVICES.[Nom du service],
SERVICES.Factureindividuelle, CLIENTS.[Nom], CLIENTS.Monsieur,
CLIENTS.Prénom, CLIENTS.Adresse, CLIENTS.Ville, CLIENTS.[Code Postal],
Format([DateSortie_temp], "mm") AS MoisBL, Format([DateSortie_temp],
"yyyy") AS AnnéeBL FROM (SERVICES INNER JOIN CLIENTS ON
SERVICES.Codeservice = CLIENTS.[Code service]) INNER JOIN [BL TEMP] ON
CLIENTS.Codeclient = [BL TEMP].CodeClient GROUP BY [BL TEMP].CodeClient,
CLIENTS.Codetab, CLIENTS.[Code service], SERVICES.[Nom du service],
SERVICES.Factureindividuelle, CLIENTS.[Nom], CLIENTS.Monsieur,
CLIENTS.Prénom, CLIENTS.Adresse, CLIENTS.Ville, CLIENTS.[Code Postal],
Format([DateSortie_temp],"mm"), Format([DateSortie_temp],"yyyy") HAVING
(((Format([DateSortie_temp], "mm")) = [Forms]![Choix_fact_perso]![Mois])
And ((Format([DateSortie_temp], "yyyy")) =
[Forms]![Choix_fact_perso]![Année])) ORDER BY [BL TEMP].CodeClient ; "

Debug.Print sql1

' en attendant de trouver l'erreur
' Set r = db.OpenRecordset("BL1 chrono", DB_OPEN_DYNASET)

Set s = db.OpenRecordset("Factures", DB_OPEN_DYNASET)


Comment lui indiquer que c'est une expression et non la fin de la chaîne
sql ?

Merci d'avance.

Gundt

3 réponses

1 2
Avatar
Gundt
re,

Je m'aperçois que Eric, tu m'avais posé une question à la fin et j'ai
oublié d'y répondre.

Essaies:
...

Derrière mets un debug.print sql1 pour voir ce que donne ce sql.
Ok. Je le mets après.

Je suppose que DateSortie_temp est un champ de la table [BL TEMP]


oui, c'est bien un champ de la table BL TEMP

Normalement si pas d'erreurtu devrais avoir un truc comme
... Having Format([DateSortie_temp], 'mm') = 3


oui, c'est ce que je voudrais ou mieux 03

And Format([DateSortie_temp], "yyyy") = 2007 ....
oui, je voudrais effectivement 2007.


Merci à Eric de se pencher sur cet épineux problème.

Gundt

Avatar
Gundt
Re,


La parenthèse est en trop, vires-la.
Ok. Et ça marche : )plus d'erreur. Et en plus, j'ai bien une seule

facture par client et par mois.

C'est super !!
Difficile de corriger le SQL d'access avec les préfixes sur les champs
quand cela n'est pas nécessaire, les parenthèses non justifiées ...
oui, pas évident.


Le debug.print se met après la construction de la chaine sql, sinon tu
ne verrais rien puisque la variable ne serait pas définie.
Dois-je maintenant l'enlever ou le laisser vu qu'il n'y a pas d'erreur ?


Pour l'autre post, je te donnais la correction de la syntaxe liée à la
clause Parameters mais le problème tient au fait que tu ne sors pas de
la chaine tes variables, à savoir [Forms]![Choix_fact_perso]![Année] et
[Forms]![Choix_fact_perso]![Mois].
Comme j'avais répondu sur ce fil, je ne voulais pas répéter la même chose.
Ok.


En tout cas, un grand merci, Eric.

Tu m'enlèves une sacrée épine du pied. Et je dormirai mieux ce soir.

Encore merci.

Gundt

Avatar
Eric
re,

C'est super !!
Parfait alors.

...
Le debug.print se met après la construction de la chaine sql, sinon tu
ne verrais rien puisque la variable ne serait pas définie.
Dois-je maintenant l'enlever ou le laisser vu qu'il n'y a pas d'erreur ?

Oui supprimes la ligne, elle n'a plus aucune utilité.

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


1 2