IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

ma requete SQL ne veux pas se lancer vb net et mysql


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lumbroso
    Inscrit en
    Décembre 2003
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2003
    Messages : 239
    Par défaut ma requete SQL ne veux pas se lancer vb net et mysql
    bonjour a tous voila j ai un petit soucis auquel j espere vous pourrez m aider je travaille sur vb 2013 avec une base de donnee de type mysql je voudrai faire une recherche sur 2 parametre mais ca ne fais rien pouvez vous m aider a trouver mon erreur merci

    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
     
     Private Sub cmdrechercheclt_Click(sender As Object, e As EventArgs) Handles cmdrechercheclt.Click
            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 txtrecherchecontact.Text <> "" And txtrechercheclt.Text <> "" Then
                    Dim valeur As String = txtrechercheclt.Text
                    Dim valeur1 As String = txtrecherchecontact.Text
                    Dim cmd As String = "SELECT * FROM client  WHERE (nomclt LIKE '%" & valeur & "%') OR (contactclt LIKE '%" & valeur1 & "%')"
                    ListView1.Items.Clear()
                    recherche(cmd)
                    'cn.Close()
     
                End If
     
     
            End If
     
        End Sub
    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
     
    Sub recherche(ByVal cmd_valeur As String)
            ListView1.Items.Clear()
     
            Dim cmd As New MySqlCommand(cmd_valeur, cn)
            Using L As MySqlDataReader = cmd.ExecuteReader()
                While L.Read()
                    Dim nomclt As String = L("nomclt")
                    Dim contactclt As String = L("contactclt")
                    Dim telclt As String = L("telclt")
                    Dim adresseclt As String = L("adresseclt")
                    Dim commentclt As String = L("commentclt")
     
                    ListView1.Items.Add(New ListViewItem(New String() {nomclt, contactclt, telclt, adresseclt, commentclt}))
                End While
            End Using
        End Sub

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir,

    Vu l'organisation de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub cmdrechercheclt_Click(sender As Object, e As EventArgs) Handles cmdrechercheclt.Click
            If cn.State = ConnectionState.Closed Then
                cn.Open()
    Si la connexion est déjà ouverte, rien n'est fait dans cmdrechercheclt_Click et donc, recherche n'est jamais appelée.

    Est-ce normal ?

    ...

  3. #3
    Membre éclairé Avatar de lumbroso
    Inscrit en
    Décembre 2003
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2003
    Messages : 239
    Par défaut
    La recherche marche si un champ est entre mais si j ai 2 noms idendique je n arrive pas a faire en sorte que que le contact desirer sois affiche

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    J'espère que ça s'est bien passé ...

    A défaut de pouvoir me connecter à ta DB avec ton programme, j'ai modifié la connexion et les noms de champs pour me connecter à ma DB.

    Tout fonctionne bien comme en témoigne l'illustration suivante :
    Nom : LumbrosoResult3.jpg
Affichages : 189
Taille : 106,1 Ko

    Le code correct de ta procédure est donc bien :

    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
        Private Sub cmdrechercheclt_Click(sender As Object, e As EventArgs) Handles cmdrechercheclt.Click
            If cn.State = ConnectionState.Closed Then
                cn.Open()
            End If
     
            If txtrecherchecontact.Text = "" And txtrechercheclt.Text = "" Then 'recherche si les 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 LIKE '%" & valeur & "%') OR (contactclt LIKE '%" & valeur1 & "%')"
                ListView1.Items.Clear()
                recherche(cmd)
                cn.Close()
     
            End If
     
        End Sub
    Cela fonctionne. Si tu attends d'autres résultats, c'est qu'il y a un problème de logique. Il faudrait alors que tu donnes un exemple du résultat que tu veux ...

    Là, je dois partir, je reviendrai au forum plus tard ...

    Bonne journée,

  5. #5
    Membre éclairé Avatar de lumbroso
    Inscrit en
    Décembre 2003
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2003
    Messages : 239
    Par défaut
    Alors voila ca marche bien si je prend independament le nomclt et le contactclt
    Mais voila ilmagine que j ai 2 nomclt identique et que quand je rentre le contact il m affiche uniquement ce client la ca ,ca ne marche pas

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Ok mais ta procédure est quand même douteuse : tu devrais l'écrire en déplaçant le End If comme 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
     
     Private Sub cmdrechercheclt_Click(sender As Object, e As EventArgs) Handles cmdrechercheclt.Click
            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 txtrecherchecontact.Text <> "" And txtrechercheclt.Text <> "" Then
                    Dim valeur As String = txtrechercheclt.Text
                    Dim valeur1 As String = txtrecherchecontact.Text
                    Dim cmd As String = "SELECT * FROM client  WHERE (nomclt LIKE '%" & valeur & "%') OR (contactclt LIKE '%" & valeur1 & "%')"
                    ListView1.Items.Clear()
                    recherche(cmd)
                    'cn.Close()
     
                End If
     
        End Sub
    Mais pour en revenir à ton problème :
    mais si j ai 2 noms idendique je n arrive pas a faire en sorte que que le contact desirer sois affiche
    Qu'est-ce qui peut différencier un contacte d'un autre ? Il faut qu'il y ait quelque chose qui permettrait d’affiner la clause WHERE de ta requête.
    Sinon, autre solution, afficher tous ceux qui ont le même nom avec leurs infos dans une ListBox, ou une ListView si tu préfères. Seul problème restant, comment feras-tu pour choisir lequel tu veux contacter ?

  7. #7
    Membre éclairé Avatar de lumbroso
    Inscrit en
    Décembre 2003
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2003
    Messages : 239
    Par défaut
    tout d'abord merci de me repondre

    lors ce que je fais 2 requetes du genre
    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
    elles s'exetutes sans probleme mais quand je met les 2 imbriquer elle ne prend en compte que le nomclt pourrai tu me corriger mon code afin que ma requete marche convenablement?
    merci

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Quoi de neuf ?

    Ci-joint, une simulation de DB sur une feuille XLS : SimulDB.xlsx
    Il y a 10 enregistrements semblables à ceux de ta DB et plusieurs requêtes avec leurs résultats. Cette simulation devrait te permettre de me montrer ce que tu veux comme résultats.


    ...

  9. #9
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Et bien voilà, pour me permettre de tester ce que tu souhaites, je te présente ci-dessous (l'illustration) le contenu de ta DB.

    Donne-moi la valeur de nomclt et celle de contactclt pour j'écrive la requête (pas de caractères hébraïques, je ne saurais pas les encoder).

    Dis-moi aussi quels sont les idclt des enregistrements que tu veux comme résultat.

    Nom : TableClient.jpg
Affichages : 185
Taille : 63,6 Ko

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    La syntaxe de la requête combinée avec les LIKE est correcte.

    Plusieurs choses à vérifier ...

    Puisque ta requête "SELECT * FROM client WHERE (nomclt ='" & valeur & "')" fonctionne, essaye donc : "SELECT * FROM client WHERE (nomclt LIKE '%" & valeur & "%')".

    Si tes requêtes simples ne fonctionnent plus lorsque tu remplaces = par LIKE, c'est que tu as un problème avec LIKE.
    Ne peux-tu remplacer les LIKE par = dans la requête combinée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM client WHERE nomclt = '" & valeur & "' OR  contactclt = '" & valeur1 & "' ;"
    Et si finalement, il te faut absolument la requête combinée avec des LIKE, il faudrait que tu envoies un extrait de la DB (quelques lignes, en changeant les noms, ...) pour que je puisse tester, sinon je ne peux que constater que ta requête est bien écrite ...

  11. #11
    Membre éclairé Avatar de lumbroso
    Inscrit en
    Décembre 2003
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2003
    Messages : 239
    Par défaut
    bonjour je te fais passer le formulaire en pj
    Fichiers attachés Fichiers attachés

  12. #12
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bien essayé Dysorthographie ...

    Mais tel quel, ça ne marche pas. Attention que les alternatives que tu utilises ne doivent pas être (dans ce cas) des IF mais des IIF.

    Merci pour l'idée.

    Phil

  13. #13
    Invité
    Invité(e)
    Par défaut
    IIF c'est du vba pas du VB.NET!
    chez moi ça fonctionne!

    Nom : Sans titre.png
Affichages : 183
Taille : 15,8 Ko

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je ne sais pas si ça présente le moindre intérêt mais je donne quand mème!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If valeur = "" And valeur1 = "" Then 'recherche siles 2 champs recherche sont VIDE
                ListView1.Items.Clear()
                recherche_vide()
                cn.Close()
            Else
                Dim cmd As String = "Select * FROM `client`  WHERE " + If(valeur = "", "", " (`nomclt` Like '%" & valeur & "%')") + If(valeur <> "" And valeur1 <> "", " OR ", "") + If(valeur1 = "", "", " (`contactclt` Like '%" & valeur1 & "%')")
            End If

  15. #15
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    As-tu essayé cette requête et quel est le résultat ? Dès lors que tes requêtes simples fonctionnent, celle-ci doit fonctionner aussi. Le savoir serait un pas de fait ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM client WHERE nomclt = '" & valeur & "' OR  contactclt = '" & valeur1 & "' ;"
    Pour ce que tu m'envoies, vois l'illustration ci-dessous, je ne peux rien en faire, je n'ai même pas ton code. Si tu veux m'envoyer ton application, il te faut compresser ton dossier de développement et m'envoyer le zip. Note que c'est surtout la DB qu'il me faudrait (au moins un extrait).

    Nom : Lumbroso.jpg
Affichages : 238
Taille : 101,0 Ko

  16. #16
    Membre éclairé Avatar de lumbroso
    Inscrit en
    Décembre 2003
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2003
    Messages : 239
    Par défaut
    desole voila je te joint le projet en entier avec la connection a la bdd
    Fichiers attachés Fichiers attachés

  17. #17
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Oui Dysorthographie, tu as raison, IIF, c'est du VBA ou du VisualBasic 6.0 et si la librairie MicroSoft.VisualBasic est désactivée, ça ne fonctionne pas.

    Mais je ne connais pas cette utilisation du If sans Then ... je vais devoir actualiser mes connaissances

    Cdt,

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    Oui Dysorthographie, tu as raison, IIF, c'est du VBA ou du VisualBasic 6.0 et si la librairie MicroSoft.VisualBasic est désactivée, ça ne fonctionne pas.

    Mais je ne connais pas cette utilisation du If sans Then ... je vais devoir actualiser mes connaissances

    Cdt,
    en fait c'est pareil mais on gagne un I ,une surcharge du If!

  19. #19
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je ne peux pas me connecter à la DB (la dernière illustration ci-dessous).

    Mais comme je sais maintenant qu’il s’agit de MySql, j’ai réactivé un serveur installé sur mon PC et j’ai testé ta requête sur une DB d’essai : je confirme que ta requête est correcte, le problème est ailleurs.
    Je ne sais trop comment t'aider ...

    Illustration de ma DB :
    Nom : LumbrosoLaDB.jpg
Affichages : 200
Taille : 62,6 Ko

    Illustration de la requête et de ses résultats :
    Nom : LumbrosoResult.jpg
Affichages : 231
Taille : 101,2 Ko

    Mon défaut de connexion :
    Nom : Lumbroso2.jpg
Affichages : 271
Taille : 66,8 Ko

  20. #20
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    ATTENTION : suite de mon message de 21h46'.

    Je me suis connecté à la DB via le Web et j'ai pu tester ta requête sur ta DB : tout est OK.

    Nom : LumbrosoResult2.jpg
Affichages : 214
Taille : 110,1 Ko

    Tu peux aussi procéder de la sorte pour t'assurer de la validité de ton SQL (bien sûr, il faut adapter un peu quand on revient dans VB) :

    Nom : Lumbroso3.jpg
Affichages : 206
Taille : 76,7 Ko

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Ma requete sql ne fonctionne pas comment je le veux
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/02/2012, 22h22
  2. [MySQL] requete sql ne marche pas sous mysql 4
    Par _bender_ dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 12/12/2008, 17h16
  3. [MySQL] requete SQL qui passe pas avec note pad++ but phpmyAdmin
    Par southCfou dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/11/2008, 11h20
  4. popup ne veux pas se lancer en RJS
    Par titoumimi dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 18/03/2008, 09h42
  5. Requete sql qui marche pas
    Par jahno dans le forum WinDev
    Réponses: 1
    Dernier message: 20/07/2007, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo