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 :

VB et select MySQL sur plusieurs champs


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Points : 41
    Points
    41
    Par défaut VB et select MySQL sur plusieurs champs
    Bonjour


    Je débute dans la programmation VB avec MySQL.

    Si par exemple je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strQuery = "select nom from personnel where niveau='" & TextBoxNiveau.Text & "'"
    ça fonctionne en me faisant un retour des noms de la table personnel ayant pour niveau ce que j'ai indiqué dans la textBox "TextBoxNiveau"


    Si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strQuery = "select nom from personnel where niveau='" & TextBoxNiveau.Text & "' and langue='" & TextBoxLangue.Text & "'"

    ça fonctionne en me faisant un retour des noms de la table personnel ayant pour niveau ce que j'ai indiqué dans la textBox TextBoxNiveau ET la langue indiquée dans la textBoxLangue.


    Par contre, si je ne rempli que l'un des deux champs, je n'ai aucun résultat.


    Serait-il donc possible de faire en sorte de retourner les résultats, peu importe la textbox renseignée ? Est-ce dans le code VB ou alors dans la requête SQL que je pourrais omettre un des champs mais avoir le résultats obtenu grâce à l'autre champ ?


    Merci

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Points : 28
    Points
    28
    Par défaut
    Cela parait logique puisque dans un premier temps dans ta deuxième requête tu lui demander deux conditions " &" mais la quand tu remplies tes champs en oubliant l'un des deux il n'y a pas de valeur indiqué en deuxième temps, car ici tu l'obliges à te retourner deux valeurs.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    La différence entre AND et OR est quand même une des choses vues en premier pour nimporte quelle type de programmation ...
    Le Porc est un loup pour le Porc.

  4. #4
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par asmduty Voir le message
    La différence entre AND et OR est quand même une des choses vues en premier pour nimporte quelle type de programmation ...
    En effet, j'y avais pensé.

    Cependant, en utilisant l'opérateur OR, si je rempli par exemple Niveau = 2 et Langue = FRA il me retourne comme résultat l'ensemble des personnes qui sont de Niveau 2 mais qui n'ont pas forcement la langue FRA, et les personnes qui ont comme langue FRA sans être forcement de Niveau 2.

    D'où ma question : pour réaliser ceci faut-il modifier plutôt dans le code VB ou alors dans la requête SQL ?

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    si un textbox n'est pas rempli, il ne faut pas faire de filtre where dessus tout simplement

    ou sinon le prendre en compte dans la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where (colonne = @textboxvalue OR @textboxvalue IS NULL) AND ...
    il faut aussi utiliser des paramètres plutot que de concaténer un textbox dans la requete (cherche un tutoriel sur le net)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Du coup il faut changer le code...

    puisque suivant ce qui est remplis dans tes textboxs, tu ne souhaites pas exécuter la même requête.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    ou mettre des conditions au niveau SQL en controlant si le text = ''
    Le Porc est un loup pour le Porc.

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    si un textbox n'est pas rempli, il ne faut pas faire de filtre where dessus tout simplement

    ou sinon le prendre en compte dans la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where (colonne = @textboxvalue OR @textboxvalue IS NULL) AND ...
    Pour ce type de test, prendre l'habitude d'utiliser la fonction COALESCE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where COALESCE(@textvalue, colonne) = colonne
    En cas de tests multiples, c'est plus lisible, et évite les oublis.

    ou NVL dans le cas de Oracle, mais COALESCE est normée (donc fonctionnera pour tous les SGBD), contrairement à NVL.


    il faut aussi utiliser des paramètres plutot que de concaténer un textbox dans la requete (cherche un tutoriel sur le net)
    On ne le repétera jamais assez.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Pour ce type de test, prendre l'habitude d'utiliser la fonction COALESCE
    y a ISNULL sur sql server aussi quand seulement 2 paramètres

    après niveau performance, moi ca me semble plus performant de faire ma technique car le paramètre ne variant pas on sait pour chaque ligne qu'il n'y a rien à tester, alors qu'avec isnull (ou coaslesce) le fonction est peut etre appliquée à chaque valeur
    je veux bien croire que le résultat mais certains sgbdr se font avoir pour peu de choses parfois
    il faudrait voir en test réel, bien qu'en plus ca doit varier selon le sgbdr
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    après niveau performance, moi ca me semble plus performant de faire ma technique car le paramètre ne variant pas on sait pour chaque ligne qu'il n'y a rien à tester, alors qu'avec isnull (ou coaslesce) le fonction est peut etre appliquée à chaque valeur
    Normalement non, car ces fonctions sont déterministes (au sens SQL de la chose, c'est à dire que leur résultat ne dépend que des paramètres d'entrée, donc il peut être "cached").

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

Discussions similaires

  1. [Php/MySQL] Primary key sur plusieurs champs
    Par Elendill dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/04/2009, 16h20
  2. [PDO] Requête SELECT sur plusieurs champs
    Par mathws dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/03/2009, 20h08
  3. Pb de requète selection TOP sur plusieurs champs
    Par schnock dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/05/2008, 20h12
  4. Liste de selection sur plusieurs champs
    Par Corran Horn dans le forum Langage
    Réponses: 3
    Dernier message: 09/04/2008, 14h44
  5. Réponses: 1
    Dernier message: 29/11/2006, 17h10

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