Requête sql avec variables [Résolu]

Signaler
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour j'essaye de faire fonctionner sans résultat pour le moment une requête contenant beaucoup de variables.

la requête est la suivante :

sql1 = "select sum(Montant) as CoutTotal
From table1
Where Fournisseur =" Europe- "& transp1
And Genre= & genre1 & "
       
DoCmd.RunSQL sql1

j'ai plusieurs problèmes :

table1 est une variable contenant le nom de la table, j'ai essayé de déclarer ma variable comme ceci :

From " & table1 & " mais ça ne fonctionne pas.
De plus j'ai tester un peu près toute les syntaxes possibles (sauf la bonne apparement :p)  pour intégrer mes variables transp1 et genre1 mais j'ai une erreur "missing operator" à chaque fois.

QUelqu'un connaitrais une syntaxe correcte ? Merci à vous

12 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,
Essaie peu etre
sql1 "SELECT SUM(Montant) AS CoutTotal FROM " & Table1 & <gras>" WHERE Fournisseur 'Europe- " </gras>& Transp1 & "' AND Genre='" & Genre1 & "'"

Essaie avec et sans les '
NOTE: Souhaites tu réellement l'espace que tu as mis après le - de Europe-?
@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

Ayé trouvé, il s'agissait d'une erreur de ma part concernant l'orthographe de certains nom de champ (un "s" en trop quoi...)


En tout cas merci Julien pour ta patience ! vraiment sympa ;)
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

Salut Julien

D'abord merci, en plus la syntaxe à l'air de fonctionner correctement (au passage j'ai enlevé l 'espace entre europe- et la variable :p bien vu ;) )

quand j'éxécute la requête j'ai l'erreur suivante sur docmd.runsql sql1

"Une action Executer SQL nécessite un argument consistant en une instruction sql"

Cela veut dire que j'ai mal déclarer ma requête ou bien il sait pas qui faire du résultat ?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Re,
Tu peux essayer de faire MSGBOX(sql1) une fois que tu as affecter sql1 de cette manière tu pourras vérifier que cela te donne une requête SQL "correcte". Tu peux ensuite essayer de l'exécuter directement avec outils ACCESS ou équivalent pour voir si cela te donne la même erreur

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

J'ai bien une requête correcte en tout point, grand merci à toi ;)
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

J'ai un autre problème :p

Bon la syntaxe est nickel mais je n'arrive toujours pas à l'éxécuter sous vba, j'ai l'erreur "too few parameters"

étant donné que les variables transp1 et genre1 font référence à des valeurs de listes déroulantes, j'ai mis à la place la référence au contrôle, c'est à dire

transp1 est devenu forms!modifiable57.value

le msgbox sur la requête m'indique que les paramètres sont toujours bon, par contre j'ai quand même mon erreur, "too few parameters"

Une idée ?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Re,
As tu essayer Avec et sans les '

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

Avec les ' j'ai : too few parameters expected 2
et sans j'ai : too few parameters expected 4
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

J'ai testé en rajoutant des ' à table1 ce qui donne le résultat suivant au niveau de la syntaxe:

sql1 = "SELECT SUM(Montant) AS CoutTotal FROM '" & Table1 & "' WHERE Fournisseur='Europe- " & Transp1 & "' AND Genre='" & Genre1 & "'"



J'ai désormais l'erreur incomplete query clause. je patauge un peu ;)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Re,
Non il ne faut pas mettre de ' autour du nom de la table, il faut le mettre (si je me souviens bien), autour des champs de type STRING

Ensuite tu peux essayer de remplacer SELECT SUM(....) AS .... FROM par * FROM

Juste pour voir si cela te donne la même erreur
@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010

J'ai testé avec * FROM mais toujours l'erreur too few parameters.

l'erreur se produit au niveau de mon recordset

avant la requête j'ai déclaré une variable db comme étant la base actuellement utilisée, et res comme étant un recordset

Dim res As DAO.Recordset

set db=currentdb()

puis la requête

Set res = db.OpenRecordset(sql1)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Re,
Pas de quoi l'important c'est que tu y soit arrivé seul et que tu apprennes de tes erreurs.

@+ Sur le forum

@+: Ju£i€n
Pensez: Réponse acceptée