Base de donée et recherche multi-critere

guth42 Messages postés 27 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 4 juillet 2005 - 12 sept. 2003 à 15:38
Ickik Messages postés 193 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 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.....

Merci d'avance

3 réponses

Ickik Messages postés 193 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2010 2
12 sept. 2003 à 16:13
Bonjour,
data.recordsource = "SELECT '" & "champ_1, champ_2,...... ,champ_n" & "' FROM '" & "table" & "' where " & "champ_x" & "' Like '" & " recherche" & "' and '" & " champ_y" & " like '" & "recherche2 & "'"
c'est ce que tu veux?
A+
0
guth42 Messages postés 27 Date d'inscription mardi 8 juillet 2003 Statut Membre Derniè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...)
0
Ickik Messages postés 193 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2010 2
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+
0
Rejoignez-nous