OVH Cloud OVH Cloud

SQL Querry avec Excel (Userform VBA)

6 réponses
Avatar
ionel.sbiera
Bonjour,
J'ai une base de donne=E9s acces (je travaille en Office 2003)que
j'interroge a partir d'excel via un Userform. Dans une textBox multirow
j'=E9cris la sintaxe SQL qui represente mon interrogation dans la base
de donn=E9es. J'uitlise une connexion ODBC avec ADO vers ma base acces
et copyFromRecordSet pour afficher les donn=E9es en XLS. Tout va bien si
je sais exactement quoi demander dans la partie WHERE de la sintaxe
SQL( where Client.Contry=3D"LX"), mais si par example je veux extraire
where Client.Contry=3D"*X" ca ne marche plus.
Ma question est pourquoi ma querry n'est plus execut=E9e si j'uitlise
"*" ou "?" pour remplacer des caracteres dans mon interrogation? Je
suis preneur de toute id=E9e ou sougestion, pour traiter ce souci sinon
j'ai travaill=E9 pour rien.

Btw, je veux pas creer des interrogation en Acces et les appeller de
mon Userform Excel.
Merci bcp pour votre temps( si besoin je peux fournir le code)!

6 réponses

Avatar
RaMa
Bonjour

si ça ...where Client.Contry like "*X"

au lieu de ...where Client.Contry="*X"

Est-ce tu as essayé?

Salutations
RaMa

a écrit dans le message de news:

Bonjour,
J'ai une base de donneés acces (je travaille en Office 2003)que
j'interroge a partir d'excel via un Userform. Dans une textBox multirow
j'écris la sintaxe SQL qui represente mon interrogation dans la base
de données. J'uitlise une connexion ODBC avec ADO vers ma base acces
et copyFromRecordSet pour afficher les données en XLS. Tout va bien si
je sais exactement quoi demander dans la partie WHERE de la sintaxe
SQL( where Client.Contry="LX"), mais si par example je veux extraire
where Client.Contry="*X" ca ne marche plus.
Ma question est pourquoi ma querry n'est plus executée si j'uitlise
"*" ou "?" pour remplacer des caracteres dans mon interrogation? Je
suis preneur de toute idée ou sougestion, pour traiter ce souci sinon
j'ai travaillé pour rien.

Btw, je veux pas creer des interrogation en Acces et les appeller de
mon Userform Excel.
Merci bcp pour votre temps( si besoin je peux fournir le code)!
Avatar
michdenis
Bonjour Ionel,

Un exemple de condition Where :

strRegion est une variable de type String

WHERE Name LIKE " & "'*" & strRegion & "*'"


Salutations!



a écrit dans le message de news:
Bonjour,
J'ai une base de donneés acces (je travaille en Office 2003)que
j'interroge a partir d'excel via un Userform. Dans une textBox multirow
j'écris la sintaxe SQL qui represente mon interrogation dans la base
de données. J'uitlise une connexion ODBC avec ADO vers ma base acces
et copyFromRecordSet pour afficher les données en XLS. Tout va bien si
je sais exactement quoi demander dans la partie WHERE de la sintaxe
SQL( where Client.Contry="LX"), mais si par example je veux extraire
where Client.Contry="*X" ca ne marche plus.
Ma question est pourquoi ma querry n'est plus executée si j'uitlise
"*" ou "?" pour remplacer des caracteres dans mon interrogation? Je
suis preneur de toute idée ou sougestion, pour traiter ce souci sinon
j'ai travaillé pour rien.

Btw, je veux pas creer des interrogation en Acces et les appeller de
mon Userform Excel.
Merci bcp pour votre temps( si besoin je peux fournir le code)!
Avatar
jb
Avec ADO, peut être est ce % au lieu de * (souvenir de ASP)

JB
Avatar
michdenis
Bonjour Jb,

Je te donne une idée du code (vba) que cela peut donner, le fait d'utiliser ADO pour construire un QueryTable

Observe le recordset est créé à l'aide d'ADO et il est passé à titre d'argument à la création du QueryTable.
Dans une requête ADO, on utilise *. Mais si la requête était contruite directement dans Query, alors il est vrai qu'il faudrait
remlacer * par %.

Pour ce type d'exemple, il ne fait pas oublier de charger la bibliothèque :
"Microsoft Activex Data Object 2.x Librairy"
'----------------------------
Sub ADO_QueryTable_SansODBC()

'Testé et Fonctionnel
'Accepte un champ de type mémo d'access
'Nombre de caractères limite cellule excel : 32765
'Attention au champ de type Ole

Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Qt As QueryTable, Sh As Worksheet
Dim Requete As String

Set Sh = Worksheets("Feuil1") 'à déterminer
Requete = "SELECT * FROM employés" 'à déterminer

Cnn.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes documentsComptoir.mdb;"

Rs.Open Requete, Cnn, adOpenDynamic
'Sh.Range("A1").CopyFromRecordset Rs

Set Qt = Sh.QueryTables.Add(Rs, Sh.Range("A1"))
Qt.Refresh False

Rs.Close: Cnn.Close: Set Rs = Nothing: Set Cnn = Nothing
Set Sh = Nothing: Set Qt = Nothing

End Sub
'----------------------------


Salutations!




"jb" a écrit dans le message de news:
Avec ADO, peut être est ce % au lieu de * (souvenir de ASP)

JB
Avatar
ionel.sbiera
Merci a vous tous! ce forum e génial meme ci tu poste le dimanche!!!!
Grace a vous j'utilise maintenant WHERE .... like "% LX %" et ca
marche impecabilissime!!!
Merci great people!!
Avatar
ionel.sbiera
Je voulu dire LIKE "%X"