J'ai une base de données d'accès que j'effectue à partir d'Excel avec l'aide de VBA et ADODB.Recherche dans plusieurs colonnes
Cela fonctionne parfaitement bien, mais je ne peux rechercher qu'une chose à la fois. Dites que je veux rechercher toutes les instances de "prénom" dans la colonne [1] qui a également "nom de famille" dans la colonne [2]. Ou, "prénom" dans la colonne [1] et "adresse" dans la colonne [3].
Comment procéder à partir d'une zone de texte sur un formulaire utilisateur?
Je pensais d'une certaine manière ajouter "Prénom + Nom" ou quelque chose, mais je ne peux pas comprendre la logique du code. Aucune suggestion?
C'est ce que j'ai pour l'instant.
Private Sub cmd_lookup_Click()
Dim cn As Object
Dim rs As Object
Set cn = CreateObject("ADODB.Connection")
Set sqlConnect = New ADODB.Connection
Set rs = CreateObject("ADODB.RecordSet")
sqlConnect.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Source\database.accdb;Persist Security Info=False;"
cn.Open sqlConnect
rs.ActiveConnection = cn
SearchCriteria = "%" & searchCrit.Text & "%"
rs.Open "SELECT [1],[2] ,[3],[4], [5] FROM [tblDatabase]" & _
"WHERE [1] LIKE '" & SearchCriteria & "' " & _
" OR [2] LIKE '" & SearchCriteria & "' " & _
" OR [3] LIKE '" & SearchCriteria & "' " & _
" OR [4] LIKE '" & SearchCriteria & "' " & _
" OR [5] LIKE '" & SearchCriteria & "' " & _
"ORDER BY [2] Desc;", _
cn, adOpenStatic
Dim i As Integer
If Not rs.EOF Then
rs.MoveFirst
i = 0
With lstLookup
'Code not relevant
End With
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End If
End Sub
Merci pour les suggestions :)
Il existe de nombreuses façons de procéder. J'ai tendance à utiliser un formulaire utilisateur pour que les utilisateurs saisissent des informations à interroger. Ensuite, enregistrez ces entrées en tant que variables. Cela exigera une certaine logique conditionnelle (c.-à-d. «If..End If» ou «Select ... Case») afin d'omettre tout ce qui est vide. Genre de difficile à vous dire spécifiquement sans connaître la sortie désirée. – Kyle
vous pouvez construire votre instruction where dynamiquement, y compris la commutation OU à ET lorsque vous souhaitez trouver les deux. La complication sera le GUI et les paramètres à identifier quand il sera ET ou OU etc. mais vous pouvez utiliser la liste déroulante ou la case à cocher pour AND/OR et ensuite utiliser la valeur lors de la construction de votre instruction SQL – Matt
Avez-vous plusieurs boîtes d'entrée Sur le formulaire? Si vous avez trois cases, par exemple, vous pouvez les faire remplir et ensuite ajouter une instruction 'AND' sur la requête avec ces valeurs. Si les cases sont vides, vous pouvez insérer un caractère générique au lieu d'une chaîne vide. – SandPiper