Pour ça, il te suffit de remplacer le OR par AND.
Compte tenu de ton point de départ (2 requêtes simples), je crois que le AND fera ce que tu veux.
Si tu veux que seul Daniel Toto soit affiché quand les deux sont dans les TextBox, il faut changer le méthode, dont l'algo proposé par Dysorthographie.
Il faut faire 2 requêtes, l'une avec OR quand une seule TextBox est remplie et une avec AND quand les deux TextBox sont remplies.
Mais cela ne t'empêche pas de réviser d'autres situations :
Qu'en sera-t-il des nomclt Daniel dont le contactclt n'est ni Tata, ni Toto ?
Et qu'en sera-t-il d'un autre nomclt (Phil par ex.) qui a aussi un contact nommé Toto ?
Et que fais-tu lorsqu'il y a plusieurs Daniel Toto (comme les Coca Rob de la feuille XLS) ?
... :)
Je te propose de mettre toute ta procédure cmdrechercheclt_Click en commentaire et de placer celle-ci à la place :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| Private Sub cmdrechercheclt_Click(sender As Object, e As EventArgs) Handles cmdrechercheclt.Click
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
Dim cmd As String
Dim valeur As String = txtrechercheclt.Text
Dim valeur1 As String = txtrecherchecontact.Text
ListView1.Items.Clear()
If txtrecherchecontact.Text = "" And txtrechercheclt.Text = "" Then 'recherche si les 2 champs recherche sont VIDE
recherche_vide()
ElseIf txtrechercheclt.Text <> "" And txtrecherchecontact.Text <> "" Then
Dim MaCommande As New MySqlCommand
MaCommande = cn.CreateCommand
MaCommande.CommandText = "SELECT COUNT(*) FROM client WHERE (nomclt LIKE '%" & valeur & "%') AND (contactclt LIKE '%" & valeur1 & "%')"
If MaCommande.ExecuteScalar = 1 Then
cmd = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%') AND (contactclt LIKE '%" & valeur1 & "%')"
Else
cmd = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%') OR (contactclt LIKE '%" & valeur1 & "%')"
End If
MaCommande.Dispose()
recherche(cmd)
ElseIf txtrechercheclt.Text <> "" Then
cmd = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%') "
recherche(cmd)
Else
cmd = "SELECT * FROM client WHERE (contactclt LIKE '%" & valeur1 & "%')"
recherche(cmd)
End If
cn.Close()
End Sub |
Tiens-moi au courant ...