Requête sql avec variables

Résolu
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010 - 18 août 2008 à 09:43
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 18 août 2008 à 16:46
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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 août 2008 à 09:53
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
3
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010
18 août 2008 à 16:36
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 ;)
3
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010
18 août 2008 à 10:47
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 ?
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 août 2008 à 10: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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010
18 août 2008 à 11:29
J'ai bien une requête correcte en tout point, grand merci à toi ;)
0
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010
18 août 2008 à 14:12
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 ?
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 août 2008 à 14:22
Re,
As tu essayer Avec et sans les '

@+: Ju£i€n
Pensez: Réponse acceptée
0
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010
18 août 2008 à 14:45
Avec les ' j'ai : too few parameters expected 2
et sans j'ai : too few parameters expected 4
0
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010
18 août 2008 à 15:39
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 ;)
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 août 2008 à 15:50
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
0
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010
18 août 2008 à 16:06
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)
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 août 2008 à 16:46
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
0
Rejoignez-nous