ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010
-
3 juin 2008 à 15:50
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010
-
4 juin 2008 à 09:14
Slt, j'ai une requete qui suit et j'ai un message d'erreur "erreur de syntaxe(virgule) dans l'expression '[ref reseau]=5". Je ne vois pas mon erreur.help pleaz.
If dgsr1.Check50.Value = 1 Then
Set Db = DBEngine.OpenDatabase(Bdd)
Set Rs = Db.OpenRecordset("SELECT [Nom Financeur],[codeFinanceur]" & _
"FROM [Financeur]" & _
"WHERE ([Ref reseau]=" & glob_sres & ")" & _
"ORDER BY [codeFinanceur] ", dbOpenForwardOnly)
i = 10
Do Until Rs.EOF
sNom(i) = Rs![Nom Financeur]
sql_glob_rs = sql_glob_rs & ", Financeurs_OP.Fin" & i & " as [" & sNom(i) & "]"
Rs.MoveNext
i = i + 1
Loop
sql_glob_rs = sql_glob_rs & " From Financeurs_OP WHERE ((Financeurs_OP.[Code Sres]=" & glob_sres & "))"
Me.Dat_financeurs.RecordSource = sql_glob_rs
Me.Dat_financeurs.Refresh
Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount
dgsr1.coche = True
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 juin 2008 à 16:49
Décidemment, beaucoup de problèmes :
Dans ta boucle Do-Loop :
sql_glob_rs = sql_glob_rs & ", Financeurs_OP.Fin" & i & " as [" & sNom(i) & "]"
Au premier passage, que vaut sql_glob_rs ?
Si c'est une chaine vide, elle commencera donc avec une virgule !
Juste avant cette ligne
Me.Dat_financeurs.RecordSource = sql_glob_rs
ajoute aussi un
Debug.print sql_glob_rs
Tu verras ainsi :
- qu'il manque le SELECT de tête
- que la syntaxe commence par une virgule
Il faut donc que, après la boucle, tu vires la virgule qui est en tête (Voir Mid, Left, Right)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 juin 2008 à 16:33
Salut
On te l'a déjà signalé :
Mets des espaces en fin de ligne de code avant de passer à la ligne avant le _
Sinon, ton code sera du genre :
"SELECT [Nom Financeur],[codeFinanceur]FROM [Financeur]WHERE ([Ref reseau]=5)ORDER BY [codeFinanceur]"
Normal dans ces conditions que le moteur SQL ait du mal à repérer les mots clés
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 juin 2008 à 16:34
PS : Est-ce que ton champ [ref reseau] est de type numérique dans ta DB ?
Si oui, Ok, la syntaxe est bonne
Si non (texte par exemple), encadre ta valeur avec des ' : [Ref reseau]='5'
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 juin 2008 à 16:42
Encore moi
Pense aussi à vérifier ta syntaxe SQL avant de la soumettre : Tu verras te tes propres yeux les problèmes :
Avant de la soumettre, insère un :
Debug.Print maRequète
où maRequète est la chaine qui contient la requète (à faire)
Par exemple, après ton Loop :
Debug.Print sql_glob_rs
Et visualise la chaine dans la fenêtre de debug (Ctrl-G)
Tu verras ainsi que cette ligne peut ne pas fonctionner :
... Financeurs_OP.Fin" & i & " as ...
Si 'i' vaut 1, la syntaxe donnera :
... Financeurs_OP.Fin 1 as ...
avec un espace devant le 1
--> Utilise CStr pour convertir des nombres en chaine
... Financeurs_OP.Fin" & CStr(i) & " as ...
Même si VB sait concaténer des nombres à des chaines, il vaut mieux toujours lui macher le travail, ça évite ce genre de problème.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010 3 juin 2008 à 17:56
Pour te répondre: mon champ [ref reseau] est en numérique.
Je suppose que j'ai pas besoin de convertir i et au début de mon code j'avais mis un "SELECT".
Après vérification et tenant compte de ce que tu m'as dis, j'ai la meme erreur.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 juin 2008 à 19:44
Re
Alors copie/colle ici la requète telle qu'elle apparait dans la fenêtre de debug avec les "Debug.Print" dont je t'ai parlé.
Si possible, colle ces textes avec la police "Courrier New" taille 2 afin qu'on ne se bousille pas les neuronnes à lire.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
ddove53
Messages postés623Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention15 juin 2010 4 juin 2008 à 09:14
voila ce qu'il y a dans la fenetre debug:
select [Ref reseau],[Nom Financeur] as [Financeur(s)],[Part Financeur] as [Part en %] from financeur where [ref reseau] =5 ,Financeurs_OP.Fin10 as [CG 91] ,Financeurs_OP.Fin11 as [Communauté Agglo ou Commune] ,Financeurs_OP.Fin12 as [ETAT] ,Financeurs_OP.Fin13 as [RATP] ,Financeurs_OP.Fin14 as [Région IDF] ,Financeurs_OP.Fin15 as [RFF] ,Financeurs_OP.Fin16 as [SNCF] From Financeurs_OP WHERE ((Financeurs_OP.[Code Sres]=5))