guth42
Messages postés27Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention 4 juillet 2005
-
12 sept. 2003 à 15:38
Ickik
Messages postés193Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention10 mars 2010
-
15 sept. 2003 à 11:52
Je suis débutant en base de donnée et je souhaite faire une recherche multi-critère a partir de vb dans une base.
Pour le moment j'utilise une base Access et ADO, et je renvois le resultat dans une listview. Le problème c'est que je n'arrive à faire des recherche qu'en mono-critère, avec un code du style :
BD_recordset.Filter = champ & " LIKE '" & txt_recherche & "*'"
j'ai fait des essais avec find mais j'ai pas réussi à les faire tourner.
je souhaiterais faire une truc du genre :BD_recordset.Filter champ1 & " LIKE '" & txt_recherche1 & "*'" AND BD_recordset.Filter champ2 & " LIKE '" & txt_recherche2 & "*'"
Est-ce que je suis parti sur une bonne voie? Quelqu'un peut-il m'aider ?
J'ai recherché dans les sources et les forums de CodesSourceS mais sans résultat :/
Je commence un peu à dé-espèrer ...
Si il y a quelqu'un qui à une idée, une source.....
guth42
Messages postés27Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention 4 juillet 2005 12 sept. 2003 à 16:42
je n'arrive pas a comprendre comment fonctionne ton code, je précise :
'mon code :
Option Explicit
Public public_BD As String
Public private_BD As String
Public BD As ADODB.Connection
Public commandeADO As New ADODB.Command ' Commande base de données
Public BD_recordset As New ADODB.Recordset ' Résultat de la commande
Public Function Connect()
FileCopy public_BD, private_BD
Set BD = New ADODB.Connection 'Connection base de données
BD.Provider = "Microsoft.jet.OLEDB.4.0"
BD.ConnectionString = private_BD
BD.Open
'-------------- Create a Command --------------
Set commandeADO = New ADODB.Command
commandeADO.CommandText = "gestion" ' table in the database
commandeADO.CommandType = adCmdTable
commandeADO.ActiveConnection = BD
'--------------- Create a Recordset ------------
Set BD_recordset = New ADODB.Recordset
BD_recordset.ActiveConnection = BD
Set BD_recordset.Source = commandeADO
BD_recordset.CursorLocation = adUseClient
BD_recordset.CursorType = adOpenKeyset
BD_recordset.LockType = adLockOptimistic
BD_recordset.Open
BD_recordset.Sort = start_sort
End Function
'et quand je veux faire une recherche :
BD_recordset.Filter = champ & " LIKE '" & txt_recherche & "*'"
While (Not BD_recordset.EOF)
replace_null_by_space
If BD_recordset.RecordCount <> 0 Then
'mise a jour de la listview
maj_txt_apres_recherche str_search
End If
If BD_recordset.EOF = False Then
BD_recordset.MoveNext
end if
Wend
et ce que je cherche c'est faire une recherche des entrées de la base avec txt1 dans champ1 et txt2 dans champ2
ex:
base :
nom prenom adresse
dupont jean ici
dupont paul la
duran jean la-bas
et avec comme resultat de recherche pour nom=dupont prenom=jean :
"1 entrée trouvée : nom : dupont, prenom : jean, adresse : ici"
voila j'espère que c'est plus clair ...
(je continu a recherche pour comprendre ton code...)
Ickik
Messages postés193Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention10 mars 20102 15 sept. 2003 à 11:52
Bonjour,
pour faire une recherche dans une base access utilise le langage sql : d'ou le SELECT au debut.
SELECT champ_1, champs2, .... LIKE txt_rechercche
c'est juste tu es sur la bonne voie, mais je voulais que tu fasses attention à la simple cote (') quand tu fais une concatenation avec une variable.
A+