problème de syntaxe de requète SQL

Philippe

XLDnaute Occasionnel
Bonsoir à tous,

je cherche à faire apparaitre dans une textbox dans une USF dans un classeur Excel, le premier nom rencontré commençant par "e" dans le champ "Identité" d'une base de données access...

le code utilisé:

vSQL = "select * from " & vTable & "where" & Identité = "Comme 'e*'"
vdonnées.Open vSQL, vBasededonnees, adOpenStatic, adLockReadOnly
relation_bd.ident = vdonnées("Identité")

qqes explications:
vTable est la table où se trouvent les données en question
Identité est le champ ou se trouvent les noms de la liste
relation_bd est le nom de l'USF dans mon classeur Excel
ident est le nom de la textbox de l'USF


Le lancement de la macro retourne un message d'erreur: "instruction SQL non valide; 'DELETE',' INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' attendus."

PS bien entendu les bibliothèques adéquates sont activées, la liaison avec la base de données sont effectuées....

Mon problème se situe visiblement dans la Syntaxe de la requète...

Merci aux bonnes âmes qui pourraient m'aider.

A+
Philippe
 

wilfried_42

XLDnaute Barbatruc
Re : problème de syntaxe de requète SQL

Bonsoir

je ne sais pas comment son tes variables, mais je pense qu'il manque des espaces a certains endroits, bien que n'etant pas tres familier des requetes SQL

Code:
vSQL = "select * from " & vTable & [COLOR="Red"]" where "[/COLOR] & Identité = "Comme 'e*'"
vdonnées.Open vSQL, vBasededonnees, adOpenStatic, adLockReadOnly
relation_bd.ident = vdonnées("Identité")

je ne suis pas sur que identité soit une variable, mais plutot un champ

donc je verrai mieux : mais la j'extrapole
Code:
[COLOR="Green"]vSQL = "select * from " & vTable & [COLOR="Red"]" where [/COLOR]Identité = " & chr(34) & "Comme 'e*'" & chr(34)[/COLOR] 
vdonnées.Open vSQL, vBasededonnees, adOpenStatic, adLockReadOnly
relation_bd.ident = vdonnées("Identité")
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : problème de syntaxe de requète SQL

Bonjour

Like 'e*' doit sans doute être utilisé.
Comme Michel je ne comprend mais aussi vTable : est-ce une variable ou le nom de la table Access ?
Si ce sont les noms de champs et de table pourquoi découper la requête ?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : problème de syntaxe de requète SQL

Bonsoir mes Chers Chris et Michel, bonsoir Phippe, Wilfried, le Forum

Oui un peu comme vous, "dubitatif" (entre quotes lol)

Moi j'interprète ainsi :

Dim vTable As String
Dim Identite As String
Dim vSQL As String

VTable = MaTableAccess
Identite = MonChampsDansMaTableAccess

vSQL = "SELECT * FROM " & vTable & " WHERE " & Identite & " = LIKE 'e%'"

Mais je ne sais pas si mon interprétation de ce que tente Philippe est correcte...

Bonne Nuit

@+Thierry
 

Philippe

XLDnaute Occasionnel
Re : problème de syntaxe de requète SQL

Bonsoir à tous et merci de vous être penchés sur mon problème,

Mon 1er post me semblait pourtant clair:

Je cite:

qqes explications:
vTable est la table où se trouvent les données en question
Identité est le champ ou se trouvent les noms de la liste
relation_bd est le nom de l'USF dans mon classeur Excel
ident est le nom de la textbox de l'USF

j'ai essayé toutes vos propositions, rien n'y fait, c'est rageant !!!
Toujours le même fichu message d'erreur...

D'aures idées ??

A+
Philippe
 

Philippe

XLDnaute Occasionnel
Re : problème de syntaxe de requète SQL

Rebonsoir à tous,

j'ai trouvé la réponse grace à un didacticiel très clair ici: Ce lien n'existe plus

La syntaxe exacte est:
vSQL = "SELECT * FROM patients WHERE Identité LIKE 'E%'"

et là çà marche.

Maintenant, et c'est l'étape logique suivante, comment remplir une listbox qui va contenir tous les noms débutant par ce qui aura été saisi dans une textbox (la saisie ds la textbox remplacera bien évidemment le "E" de la requète...

Je cherche de mon côté mais vox idées sont toujours les bienvenues.

Amicalement

A+
Philippe
 

Philippe

XLDnaute Occasionnel
Re : problème de syntaxe de requète SQL

Encore moi,

Voilà, problème résolu:

ci dessous le code qui rempli la listbox en fonction de ce qui est saisi dans la textbox:

Private Sub TextBox1_Change()
Dim vSQL As String
Dim vsource As String
On Error Resume Next
vBasededonnees.Close
On Error GoTo 0
ListBox1.Clear
rech = TextBox1
' vTable = "patients"
vsource = "C:\test lis.mdb"
vBasededonnees.Open "provider=microsoft.jet.oledb.4.0;" & "persist security info=false;"_ & "data source=" & vsource
vSQL = "SELECT * FROM patients WHERE Identité LIKE '" & rech & "%'"
vdonnées.Open vSQL, vBasededonnees, adOpenStatic, adLockReadOnly

boucl:
ListBox1.AddItem (vdonnées("Identité"))
On Error GoTo fin ' <-- Si on arrive au bout des enregistrements filtrés il va y avoir
une erreur générée, ce qui signe la fin de la procédure...
vdonnées.MoveNext
GoTo boucl
fin:
On Error GoTo 0
End Sub


Testé et approuvé !!!

Cette fois ci bonne nuit à tous et merci de votre aide

A+
Philippe
 

Discussions similaires