J'ai r=E9alis=E9 une UserForm qui permet d'attaquer une base=20
de donn=E9es Access (avec ADO) pour rapatrier des noms de=20
villes dans une listBox.
Donn=E9es :
* Base Access : C:\BASE.mdb contient une seule=20
table "tbl_Ville" avec un seul champ "Ville".=20
J'ai saisi 4 villes : TOULOUSE, TORCY, TOUCY, TOUFFLERS
* La UserForm comprend un TextBox : txt_Cherche=20
et une ListBox : lst_Trouve
Le but est de saisir dans le TextBox une partie d'un nom=20
de ville et de r=E9cup=E9rer dans la liste le nom des villes=20
filtr=E9es.
Ma requ=EAte SQL n'est pas param=E9tr=E9e pour pouvoir filtrer=20
les donn=E9es dans Access.
Exemple de r=E9sultat souhait=E9 :=20
* si je tape *OU* -> TOULOUSE + TOUCY
* si je tape *LOU* -> TOULOUSE=20
Voici le code utilis=E9 pour attaquer la base et r=E9cup=E9rer=20
la liste compl=E8te des noms de villes.
Private Sub txt_Cherche_AfterUpdate()
Dim cn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strSql As String
'Ouvrir la base de donn=E9es Access
Set cn =3D New ADODB.Connection
'Ouvre la connexion
With cn
.Provider =3D "Microsoft.Jet.OLEDB.4.0"
.Open "C:\BASE.mdb"
End With
=20
strSql =3D "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER=20
BY tbl_Ville.Ville;"
=20
' Ouvre un jeu d'enregistrements.
Set rst =3D New ADODB.Recordset
=20
With rst
.Open Source:=3DstrSql, _
ActiveConnection:=3Dcn, _
CursorType:=3DadOpenForwardOnly, _
LockType:=3DadLockReadOnly
End With
Dim I As Integer
I =3D 0
lst_Trouve.ColumnCount =3D 1
lst_Trouve.Clear
Do Until rst.EOF
lst_Trouve.AddItem rst.Fields(0).Value
I =3D I + 1
rst.MoveNext
Loop
If lst_Trouve.ListCount <> 0 Then lst_Trouve.ListIndex=20
=3D 0
lst_Trouve.SetFocus
=20
'Fermer le recordset et la connexion
rst.Close
Set rst =3D Nothing
=20
cn.Close
Set cn =3D Nothing
End Sub
Quelqu'un sait-il comment am=E9liorer ma requ=EAte pour que =E7a=20
fonctionne correctement (op=E9rateur Like ?) avec la =20
syntaxe exacte :
strSql =3D "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY=20
tbl_Ville.Ville;"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Denis Michon
Bonjour KIKSAN,
Pour écrire ton critère de la condition Where en utilisant ce qui est saisi dans le textbox :
Dim Critere As String
Critere = "'%" & Me.textbox1.text & "%'"
Tu dois remplacer Me par le nom de ton formulaire si ta procédure ADO est inscrite dans un module autre que le module du formulaire.
Ta requête pourrait ressembler à ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _ " FROM tbl_Ville " & vbCrLf & _ "ORDER BY tbl_Ville.Ville " & vbCrLf & _ " Where Ville like " & Critere
Bon travail,
Salutations!
"KIKSAN" a écrit dans le message de news:1d7401c388da$90d48240$ Bonjour à tous,
J'ai réalisé une UserForm qui permet d'attaquer une base de données Access (avec ADO) pour rapatrier des noms de villes dans une listBox.
Données :
* Base Access : C:BASE.mdb contient une seule table "tbl_Ville" avec un seul champ "Ville". J'ai saisi 4 villes : TOULOUSE, TORCY, TOUCY, TOUFFLERS
* La UserForm comprend un TextBox : txt_Cherche et une ListBox : lst_Trouve
Le but est de saisir dans le TextBox une partie d'un nom de ville et de récupérer dans la liste le nom des villes filtrées. Ma requête SQL n'est pas paramétrée pour pouvoir filtrer les données dans Access. Exemple de résultat souhaité : * si je tape *OU* -> TOULOUSE + TOUCY * si je tape *LOU* -> TOULOUSE
Voici le code utilisé pour attaquer la base et récupérer la liste complète des noms de villes.
Private Sub txt_Cherche_AfterUpdate()
Dim cn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim strSql As String
'Ouvrir la base de données Access Set cn = New ADODB.Connection 'Ouvre la connexion With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "C:BASE.mdb" End With
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY tbl_Ville.Ville;"
' Ouvre un jeu d'enregistrements. Set rst = New ADODB.Recordset
With rst .Open Source:=strSql, _ ActiveConnection:=cn, _ CursorType:OpenForwardOnly, _ LockType:LockReadOnly End With
Dim I As Integer I = 0
lst_Trouve.ColumnCount = 1 lst_Trouve.Clear
Do Until rst.EOF lst_Trouve.AddItem rst.Fields(0).Value I = I + 1 rst.MoveNext Loop
If lst_Trouve.ListCount <> 0 Then lst_Trouve.ListIndex = 0 lst_Trouve.SetFocus
'Fermer le recordset et la connexion rst.Close Set rst = Nothing
cn.Close Set cn = Nothing
End Sub
Quelqu'un sait-il comment améliorer ma requête pour que ça fonctionne correctement (opérateur Like ?) avec la syntaxe exacte :
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY tbl_Ville.Ville;"
Merci par avance
KIKSAN
Bonjour KIKSAN,
Pour écrire ton critère de la condition Where en utilisant ce qui est saisi dans le textbox :
Dim Critere As String
Critere = "'%" & Me.textbox1.text & "%'"
Tu dois remplacer Me par le nom de ton formulaire si ta procédure ADO est inscrite dans un module autre que le module du
formulaire.
Ta requête pourrait ressembler à ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _
" FROM tbl_Ville " & vbCrLf & _
"ORDER BY tbl_Ville.Ville " & vbCrLf & _
" Where Ville like " & Critere
Bon travail,
Salutations!
"KIKSAN" <bm@dasse-constructeur.com> a écrit dans le message de news:1d7401c388da$90d48240$a101280a@phx.gbl...
Bonjour à tous,
J'ai réalisé une UserForm qui permet d'attaquer une base
de données Access (avec ADO) pour rapatrier des noms de
villes dans une listBox.
Données :
* Base Access : C:BASE.mdb contient une seule
table "tbl_Ville" avec un seul champ "Ville".
J'ai saisi 4 villes : TOULOUSE, TORCY, TOUCY, TOUFFLERS
* La UserForm comprend un TextBox : txt_Cherche
et une ListBox : lst_Trouve
Le but est de saisir dans le TextBox une partie d'un nom
de ville et de récupérer dans la liste le nom des villes
filtrées.
Ma requête SQL n'est pas paramétrée pour pouvoir filtrer
les données dans Access.
Exemple de résultat souhaité :
* si je tape *OU* -> TOULOUSE + TOUCY
* si je tape *LOU* -> TOULOUSE
Voici le code utilisé pour attaquer la base et récupérer
la liste complète des noms de villes.
Private Sub txt_Cherche_AfterUpdate()
Dim cn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strSql As String
'Ouvrir la base de données Access
Set cn = New ADODB.Connection
'Ouvre la connexion
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open "C:BASE.mdb"
End With
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER
BY tbl_Ville.Ville;"
' Ouvre un jeu d'enregistrements.
Set rst = New ADODB.Recordset
With rst
.Open Source:=strSql, _
ActiveConnection:=cn, _
CursorType:OpenForwardOnly, _
LockType:LockReadOnly
End With
Dim I As Integer
I = 0
lst_Trouve.ColumnCount = 1
lst_Trouve.Clear
Do Until rst.EOF
lst_Trouve.AddItem rst.Fields(0).Value
I = I + 1
rst.MoveNext
Loop
If lst_Trouve.ListCount <> 0 Then lst_Trouve.ListIndex
= 0
lst_Trouve.SetFocus
'Fermer le recordset et la connexion
rst.Close
Set rst = Nothing
cn.Close
Set cn = Nothing
End Sub
Quelqu'un sait-il comment améliorer ma requête pour que ça
fonctionne correctement (opérateur Like ?) avec la
syntaxe exacte :
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY
tbl_Ville.Ville;"
Pour écrire ton critère de la condition Where en utilisant ce qui est saisi dans le textbox :
Dim Critere As String
Critere = "'%" & Me.textbox1.text & "%'"
Tu dois remplacer Me par le nom de ton formulaire si ta procédure ADO est inscrite dans un module autre que le module du formulaire.
Ta requête pourrait ressembler à ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _ " FROM tbl_Ville " & vbCrLf & _ "ORDER BY tbl_Ville.Ville " & vbCrLf & _ " Where Ville like " & Critere
Bon travail,
Salutations!
"KIKSAN" a écrit dans le message de news:1d7401c388da$90d48240$ Bonjour à tous,
J'ai réalisé une UserForm qui permet d'attaquer une base de données Access (avec ADO) pour rapatrier des noms de villes dans une listBox.
Données :
* Base Access : C:BASE.mdb contient une seule table "tbl_Ville" avec un seul champ "Ville". J'ai saisi 4 villes : TOULOUSE, TORCY, TOUCY, TOUFFLERS
* La UserForm comprend un TextBox : txt_Cherche et une ListBox : lst_Trouve
Le but est de saisir dans le TextBox une partie d'un nom de ville et de récupérer dans la liste le nom des villes filtrées. Ma requête SQL n'est pas paramétrée pour pouvoir filtrer les données dans Access. Exemple de résultat souhaité : * si je tape *OU* -> TOULOUSE + TOUCY * si je tape *LOU* -> TOULOUSE
Voici le code utilisé pour attaquer la base et récupérer la liste complète des noms de villes.
Private Sub txt_Cherche_AfterUpdate()
Dim cn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim strSql As String
'Ouvrir la base de données Access Set cn = New ADODB.Connection 'Ouvre la connexion With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "C:BASE.mdb" End With
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY tbl_Ville.Ville;"
' Ouvre un jeu d'enregistrements. Set rst = New ADODB.Recordset
With rst .Open Source:=strSql, _ ActiveConnection:=cn, _ CursorType:OpenForwardOnly, _ LockType:LockReadOnly End With
Dim I As Integer I = 0
lst_Trouve.ColumnCount = 1 lst_Trouve.Clear
Do Until rst.EOF lst_Trouve.AddItem rst.Fields(0).Value I = I + 1 rst.MoveNext Loop
If lst_Trouve.ListCount <> 0 Then lst_Trouve.ListIndex = 0 lst_Trouve.SetFocus
'Fermer le recordset et la connexion rst.Close Set rst = Nothing
cn.Close Set cn = Nothing
End Sub
Quelqu'un sait-il comment améliorer ma requête pour que ça fonctionne correctement (opérateur Like ?) avec la syntaxe exacte :
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY tbl_Ville.Ville;"
Merci par avance
KIKSAN
Denis Michon
Petite correction
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _ " FROM tbl_Ville " & vbCrLf & _ "ORDER BY tbl_Ville.Ville " & vbCrLf & _ " Where Ville like " & Critere
J'aurais dû inversé les 2 derniers arguments comme ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _ " FROM tbl_Ville " & vbCrLf & _ " Where Ville like " & Critere & vbCrLf & _ "ORDER BY tbl_Ville.Ville "
Salutation!
"Denis Michon" a écrit dans le message de news:zKVeb.94410$ Bonjour KIKSAN,
Pour écrire ton critère de la condition Where en utilisant ce qui est saisi dans le textbox :
Dim Critere As String
Critere = "'%" & Me.textbox1.text & "%'"
Tu dois remplacer Me par le nom de ton formulaire si ta procédure ADO est inscrite dans un module autre que le module du formulaire.
Ta requête pourrait ressembler à ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _ " FROM tbl_Ville " & vbCrLf & _ "ORDER BY tbl_Ville.Ville " & vbCrLf & _ " Where Ville like " & Critere
Bon travail,
Salutations!
"KIKSAN" a écrit dans le message de news:1d7401c388da$90d48240$ Bonjour à tous,
J'ai réalisé une UserForm qui permet d'attaquer une base de données Access (avec ADO) pour rapatrier des noms de villes dans une listBox.
Données :
* Base Access : C:BASE.mdb contient une seule table "tbl_Ville" avec un seul champ "Ville". J'ai saisi 4 villes : TOULOUSE, TORCY, TOUCY, TOUFFLERS
* La UserForm comprend un TextBox : txt_Cherche et une ListBox : lst_Trouve
Le but est de saisir dans le TextBox une partie d'un nom de ville et de récupérer dans la liste le nom des villes filtrées. Ma requête SQL n'est pas paramétrée pour pouvoir filtrer les données dans Access. Exemple de résultat souhaité : * si je tape *OU* -> TOULOUSE + TOUCY * si je tape *LOU* -> TOULOUSE
Voici le code utilisé pour attaquer la base et récupérer la liste complète des noms de villes.
Private Sub txt_Cherche_AfterUpdate()
Dim cn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim strSql As String
'Ouvrir la base de données Access Set cn = New ADODB.Connection 'Ouvre la connexion With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "C:BASE.mdb" End With
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY tbl_Ville.Ville;"
' Ouvre un jeu d'enregistrements. Set rst = New ADODB.Recordset
With rst .Open Source:=strSql, _ ActiveConnection:=cn, _ CursorType:OpenForwardOnly, _ LockType:LockReadOnly End With
Dim I As Integer I = 0
lst_Trouve.ColumnCount = 1 lst_Trouve.Clear
Do Until rst.EOF lst_Trouve.AddItem rst.Fields(0).Value I = I + 1 rst.MoveNext Loop
If lst_Trouve.ListCount <> 0 Then lst_Trouve.ListIndex = 0 lst_Trouve.SetFocus
'Fermer le recordset et la connexion rst.Close Set rst = Nothing
cn.Close Set cn = Nothing
End Sub
Quelqu'un sait-il comment améliorer ma requête pour que ça fonctionne correctement (opérateur Like ?) avec la syntaxe exacte :
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY tbl_Ville.Ville;"
Merci par avance
KIKSAN
Petite correction
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _
" FROM tbl_Ville " & vbCrLf & _
"ORDER BY tbl_Ville.Ville " & vbCrLf & _
" Where Ville like " & Critere
J'aurais dû inversé les 2 derniers arguments comme ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _
" FROM tbl_Ville " & vbCrLf & _
" Where Ville like " & Critere & vbCrLf & _
"ORDER BY tbl_Ville.Ville "
Salutation!
"Denis Michon" <denis.michon@cgocable.ca> a écrit dans le message de news:zKVeb.94410$C92.56146@charlie.risq.qc.ca...
Bonjour KIKSAN,
Pour écrire ton critère de la condition Where en utilisant ce qui est saisi dans le textbox :
Dim Critere As String
Critere = "'%" & Me.textbox1.text & "%'"
Tu dois remplacer Me par le nom de ton formulaire si ta procédure ADO est inscrite dans un module autre que le module du
formulaire.
Ta requête pourrait ressembler à ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _
" FROM tbl_Ville " & vbCrLf & _
"ORDER BY tbl_Ville.Ville " & vbCrLf & _
" Where Ville like " & Critere
Bon travail,
Salutations!
"KIKSAN" <bm@dasse-constructeur.com> a écrit dans le message de news:1d7401c388da$90d48240$a101280a@phx.gbl...
Bonjour à tous,
J'ai réalisé une UserForm qui permet d'attaquer une base
de données Access (avec ADO) pour rapatrier des noms de
villes dans une listBox.
Données :
* Base Access : C:BASE.mdb contient une seule
table "tbl_Ville" avec un seul champ "Ville".
J'ai saisi 4 villes : TOULOUSE, TORCY, TOUCY, TOUFFLERS
* La UserForm comprend un TextBox : txt_Cherche
et une ListBox : lst_Trouve
Le but est de saisir dans le TextBox une partie d'un nom
de ville et de récupérer dans la liste le nom des villes
filtrées.
Ma requête SQL n'est pas paramétrée pour pouvoir filtrer
les données dans Access.
Exemple de résultat souhaité :
* si je tape *OU* -> TOULOUSE + TOUCY
* si je tape *LOU* -> TOULOUSE
Voici le code utilisé pour attaquer la base et récupérer
la liste complète des noms de villes.
Private Sub txt_Cherche_AfterUpdate()
Dim cn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strSql As String
'Ouvrir la base de données Access
Set cn = New ADODB.Connection
'Ouvre la connexion
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open "C:BASE.mdb"
End With
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER
BY tbl_Ville.Ville;"
' Ouvre un jeu d'enregistrements.
Set rst = New ADODB.Recordset
With rst
.Open Source:=strSql, _
ActiveConnection:=cn, _
CursorType:OpenForwardOnly, _
LockType:LockReadOnly
End With
Dim I As Integer
I = 0
lst_Trouve.ColumnCount = 1
lst_Trouve.Clear
Do Until rst.EOF
lst_Trouve.AddItem rst.Fields(0).Value
I = I + 1
rst.MoveNext
Loop
If lst_Trouve.ListCount <> 0 Then lst_Trouve.ListIndex
= 0
lst_Trouve.SetFocus
'Fermer le recordset et la connexion
rst.Close
Set rst = Nothing
cn.Close
Set cn = Nothing
End Sub
Quelqu'un sait-il comment améliorer ma requête pour que ça
fonctionne correctement (opérateur Like ?) avec la
syntaxe exacte :
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY
tbl_Ville.Ville;"
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _ " FROM tbl_Ville " & vbCrLf & _ "ORDER BY tbl_Ville.Ville " & vbCrLf & _ " Where Ville like " & Critere
J'aurais dû inversé les 2 derniers arguments comme ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _ " FROM tbl_Ville " & vbCrLf & _ " Where Ville like " & Critere & vbCrLf & _ "ORDER BY tbl_Ville.Ville "
Salutation!
"Denis Michon" a écrit dans le message de news:zKVeb.94410$ Bonjour KIKSAN,
Pour écrire ton critère de la condition Where en utilisant ce qui est saisi dans le textbox :
Dim Critere As String
Critere = "'%" & Me.textbox1.text & "%'"
Tu dois remplacer Me par le nom de ton formulaire si ta procédure ADO est inscrite dans un module autre que le module du formulaire.
Ta requête pourrait ressembler à ceci :
strSql = "SELECT tbl_Ville.Ville " & vbCrLf & _ " FROM tbl_Ville " & vbCrLf & _ "ORDER BY tbl_Ville.Ville " & vbCrLf & _ " Where Ville like " & Critere
Bon travail,
Salutations!
"KIKSAN" a écrit dans le message de news:1d7401c388da$90d48240$ Bonjour à tous,
J'ai réalisé une UserForm qui permet d'attaquer une base de données Access (avec ADO) pour rapatrier des noms de villes dans une listBox.
Données :
* Base Access : C:BASE.mdb contient une seule table "tbl_Ville" avec un seul champ "Ville". J'ai saisi 4 villes : TOULOUSE, TORCY, TOUCY, TOUFFLERS
* La UserForm comprend un TextBox : txt_Cherche et une ListBox : lst_Trouve
Le but est de saisir dans le TextBox une partie d'un nom de ville et de récupérer dans la liste le nom des villes filtrées. Ma requête SQL n'est pas paramétrée pour pouvoir filtrer les données dans Access. Exemple de résultat souhaité : * si je tape *OU* -> TOULOUSE + TOUCY * si je tape *LOU* -> TOULOUSE
Voici le code utilisé pour attaquer la base et récupérer la liste complète des noms de villes.
Private Sub txt_Cherche_AfterUpdate()
Dim cn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim strSql As String
'Ouvrir la base de données Access Set cn = New ADODB.Connection 'Ouvre la connexion With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .Open "C:BASE.mdb" End With
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY tbl_Ville.Ville;"
' Ouvre un jeu d'enregistrements. Set rst = New ADODB.Recordset
With rst .Open Source:=strSql, _ ActiveConnection:=cn, _ CursorType:OpenForwardOnly, _ LockType:LockReadOnly End With
Dim I As Integer I = 0
lst_Trouve.ColumnCount = 1 lst_Trouve.Clear
Do Until rst.EOF lst_Trouve.AddItem rst.Fields(0).Value I = I + 1 rst.MoveNext Loop
If lst_Trouve.ListCount <> 0 Then lst_Trouve.ListIndex = 0 lst_Trouve.SetFocus
'Fermer le recordset et la connexion rst.Close Set rst = Nothing
cn.Close Set cn = Nothing
End Sub
Quelqu'un sait-il comment améliorer ma requête pour que ça fonctionne correctement (opérateur Like ?) avec la syntaxe exacte :
strSql = "SELECT tbl_Ville.Ville FROM tbl_Ville ORDER BY tbl_Ville.Ville;"