Bonjour
Si tout est ok pourquoi je n arrive pas a executer cette requette
Bonjour
Si tout est ok pourquoi je n arrive pas a executer cette requette
j'ai escaladé VB depuis VB3! mais j’arrête de marcher sur le fils de notre amis.
je pense que vous pouvez reconsidérer la requête aux vues du poste #26.
Dernière modification par Invité ; 19/06/2019 à 16h21.
Salut
Je viels de rajouter 2 lignes qui on pour nom clt daniel toto
Et daniel tata
Ce que je veux faire c est que lors ce que je tappe daniel pour le nom clt tata pour le contact la ligne daniel tata s affiche sans me mettre tous les enregistrements comportant le nom daniel
C'est dingue !
Je viens de faire ce test :
et bien entendu ça marche !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim a As Integer = 5 MessageBox.Show("Valeur de A = " & If(a > 5, "A > 5", "A !>5"))
Je n'ai jamais tenté cela quand je suis passé de VB6 à VB.Net. Les rares cas où j'ai eu besoin d'un IIF, j'ai contourné le problème ...
Merci à toi![]()
... c'est bien la question !!!
Je te propose d'expérimenter exactement quelques points (le but étant de chercher l'origine du problème, le résoudre sera autre chose).
Là où tu as écrit le code suivant, dont tu affirmes qu'il fonctionne :
exactement à cet endroit, remplace ce code par le suivant (note que je mets tes lignes changées en commentaires, je ne les efface pas, il te sera facile d'annuler mes modifs) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 If txtrechercheclt.Text <> "" Then Dim valeur As String = txtrechercheclt.Text Dim cmd As String = "SELECT * FROM client WHERE (nomclt='" & valeur & "')" recherche(cmd) cn.Close() ElseIf txtrecherchecontact.Text <> "" Then Dim valeur1 As String = txtrecherchecontact.Text Dim cmd As String = "SELECT * FROM client WHERE (contactclt='" & valeur1 & "')" recherche(cmd) cn.Close() End If
Pour une appréciation significative, il te faut exécuter le code avant modifs et celui après modifs avec le même jeux de valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 If txtrechercheclt.Text <> "" Then Dim valeur As String = txtrechercheclt.Text ' Dim cmd As String = "SELECT * FROM client WHERE (nomclt='" & valeur & "')" Dim cmd As String = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%')" ' juste remplacé = par LIKE recherche(cmd) cn.Close() ElseIf txtrecherchecontact.Text <> "" Then Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt='" & valeur1 & "')" Dim cmd As String = "SELECT * FROM client WHERE (contactclt LIKE '%" & valeur1 & "%')" ' juste remplacé = par LIKE recherche(cmd) cn.Close() End If
Cela DOIT fonctionner ...
Merci de m'informer du résultat et je t'indiquerai l'étape de débogage suivante (j'ai déjà une idée ..., je la vérifie entre temps).
A tantôt,
salut a toi je viens de remplacer le code par ce que tu m as donne mais le resultat est le meme je pete un cable
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ...
... le même que quoi ...je viens de remplacer le code par ce que tu m as donne mais le resultat est le meme je pete un cable
ça marche avec mon code ou pas ? et avec ton code ça marche toujours ?
Excuse-moi, mais ton message ne m'explique pas grand chose ...
Le resultat est le meme c est a dire rien comme avant
Donc tu confirmes que ceci fonctionne : Dim cmd As String = "SELECT * FROM client WHERE (nomclt='" & valeur & "')".
et que ceci ne fonctionne pas :Dim cmd As String = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%')".
En requete simple les 2 marche mais sur le nomclt et contactclt la reponse est ca marche pas
N'oublie pas de remplacer If MaCommande.ExecuteScalar = 1 Then ... par If MaCommande.ExecuteScalar > 0 Then ... (cf. le message privé que je t'ai envoyé).
Bonne nuit![]()
Je comprends donc que le code suivant fonctionne aussi bien avec ... (nomclt='" & valeur & "')" qu'avec ... (nomclt LIKE '%" & valeur & "%')".
SI c'est bien ainsi, alors je te demande de remplacer ce code par le suivant (dans la même procédure) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 If txtrechercheclt.Text <> "" Then Dim valeur As String = txtrechercheclt.Text ' Dim cmd As String = "SELECT * FROM client WHERE (nomclt='" & valeur & "')" Dim cmd As String = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%')" ' juste remplacé = par LIKE recherche(cmd) cn.Close() ElseIf txtrecherchecontact.Text <> "" Then Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt='" & valeur1 & "')" Dim cmd As String = "SELECT * FROM client WHERE (contactclt LIKE '%" & valeur1 & "%')" ' juste remplacé = par LIKE recherche(cmd) cn.Close() End If
est-ce que ça marche (avec le même jeu de valeur que dans tes tests simples) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 If txtrechercheclt.Text <> "" AND txtrecherchecontact.Text <> "" Then Dim valeur As String = txtrechercheclt.Text Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (nomclt='" & valeur & "')" Dim cmd As String = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%') OR (contactclt LIKE '%" & valeur1 & "%')" recherche(cmd) cn.Close() ' ElseIf txtrecherchecontact.Text <> "" Then ' Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt='" & valeur1 & "')" ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt LIKE '%" & valeur1 & "%')" ' juste remplacé = par LIKE ' recherche(cmd) ' cn.Close() End If
alors voila le resultat donne la meme chose c 'est a dire si je fais la recherche par le nom ca marche ,recherche par contact ca marche
si je fais le 2 rien il me met tous les nom qui son identique par nomclt
voila le code apres modif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
42
43
44
45
46
47
48
49
50
51 If cn.State = ConnectionState.Closed Then cn.Open() If txtrecherchecontact.Text = "" And txtrechercheclt.Text = "" Then 'recherche siles 2 champs recherche sont VIDE ListView1.Items.Clear() recherche_vide() cn.Close() End If If txtrechercheclt.Text <> "" And txtrecherchecontact.Text <> "" Then Dim valeur As String = txtrechercheclt.Text Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (nomclt='" & valeur & "')" Dim cmd As String = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%') OR (contactclt LIKE '%" & valeur1 & "%')" recherche(cmd) cn.Close() ' ElseIf txtrecherchecontact.Text <> "" Then ' Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt='" & valeur1 & "')" ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt LIKE '%" & valeur1 & "%')" ' juste remplacé = par LIKE ' recherche(cmd) ' cn.Close() End If If txtrechercheclt.Text <> "" Then Dim valeur As String = txtrechercheclt.Text ' Dim cmd As String = "SELECT * FROM client WHERE (nomclt='" & valeur & "')" Dim cmd As String = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%')" ' juste remplacé = par LIKE recherche(cmd) cn.Close() ElseIf txtrecherchecontact.Text <> "" Then Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt='" & valeur1 & "')" Dim cmd As String = "SELECT * FROM client WHERE (contactclt LIKE '%" & valeur1 & "%')" ' juste remplacé = par LIKE recherche(cmd) cn.Close() End If End If
Il y a trop de code dans ce que tu envoies, il faut ne garder que ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 If cn.State = ConnectionState.Closed Then cn.Open() end if If txtrecherchecontact.Text = "" And txtrechercheclt.Text = "" Then 'recherche siles 2 champs recherche sont VIDE ListView1.Items.Clear() recherche_vide() cn.Close() End If If txtrechercheclt.Text <> "" And txtrecherchecontact.Text <> "" Then Dim valeur As String = txtrechercheclt.Text Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (nomclt='" & valeur & "')" Dim cmd As String = "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%') OR (contactclt LIKE '%" & valeur1 & "%')" recherche(cmd) cn.Close() ' ElseIf txtrecherchecontact.Text <> "" Then ' Dim valeur1 As String = txtrecherchecontact.Text ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt='" & valeur1 & "')" ' Dim cmd As String = "SELECT * FROM client WHERE (contactclt LIKE '%" & valeur1 & "%')" ' juste remplacé = par LIKE ' recherche(cmd) ' cn.Close() End If
il te faut faire l'essai avec les valeurs : jh pour nomclt et haa pour contactclt (suffit d’encoder ça dans les TextBox) et cela doit te donner 3 lignes de réponses, les mêmes que sur l'illustration suivante (je suis impatient de connaître le résultat, mais je ne pourrai reprendre le forum que demain après 11h.) :
![]()
Partager