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...
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...
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
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 ?
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...
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.
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