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 :

Lier 2 listes déroulantes remplies avec données d'une BD


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Lier 2 listes déroulantes remplies avec données d'une BD
    Bonjour,
    je suis nouveau sur ce site, n'hésitez pas à me laisser savoir si il y a des choses qui ne sont pas conforme dans cette discussion que je place.

    Après plusieurs heures de recherche et lecture sur ce site et le Web, j'ai décidé de vous soumettre mon problème, car je n'ai rien pu trouver qui répondait à mon besoin. J'ai vu beaucoup d'exemple pour Access, ASP, etc., mais rien de concret avec VB.Net. J'utilise VB.net 2005 Express.

    Dans mon application j'ai 2 listes déroulantes.



    Ces listes déroulantes sont liées à une base de données.



    La liste déroulante Groupe Aliments est liée à la table FOOD_GRP et récupère les données du champ FD_GRP_NMF.


    Ceci fonctionne sans problème.

    La deuxième liste déroulante Aliments est liée à la table FOOD_NM et récupère les données du champ L_FD_NMF.



    Le problème est que ce champ contient plus de 5500 items, donc un peu trop volumineux pour une liste déroulante... pas très pratique.

    Je voudrais pouvoir filtrer les items de la deuxième liste déroulante par rapport à la sélection qui a été faite dans la première liste déroulante et ce en me servant du champ clé FD_GRP_C de la table FOOD_GRP. Cette clé je la récupère dans un champ texte qui est non visible en mode exécution.



    Le problème, c'est que je ne trouve pas la façon de faire pour aller filtrer dynamiquement le contenu de la liste déroulante Aliments pour que seulement les items dont le FD_GRP_C est égal à ce que j'ai récupéré dans le champ texte.

    J'ai réussi à le faire statiquement en faisant une requête (en utilisant la fonction Add query au bas de la fenêtre Combo Tasks)



    et y ajoutant un filtre dans la colonne filtre du champ FD_GRP_C, mais je ne trouve pas comment aller changer dynamiquement la valeur du filtre.

    Je suis probablement complètement dans le champ en esseyant de faire comme je le fait, mais je ne sais trop comment faire. Pourtant ça doit pas être si compliqué.

    Est-ce quelqu'un pourrait me donner une piste?

    Merci à l'avance!
    Images attachées Images attachées      

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Une information supplémentaire.
    Bonjour,
    j'aimerais juste donner une information supplémentaire. Ma base de données est locale et la connection à celle-ci se fait au travers des outils DataSet, BindingSource et Adapter qui se sont créés automatiquement lorsque j'ai fait la liaison des champs des listes déroulantes.



    Merci!
    Images attachées Images attachées  

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Une solution: ne pas lier les combo avec la propriété BondingSource
    Bonjour,
    j'ai trouvé une façon de faire, peut-être pas la meilleure ou la plus efficace... je ne sais pas, mais en tout les cas ça fait ce que je désirais avoir.

    Pour ceux que ça intéresse, voici ce que j'ai fait pour avoir la 2e liste déroulante dépendante de la sélection de la première.

    J'ai tout d'abord enlevé les liens "BondingSource" dans les "Combo Task", (voir mon premier message)

    Ensuite dans la Sub Form_Load, j'ai rempli la première liste déroulante avec le code ci-desous.

    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
    Public Class frmPrincipale
     
        Private Sub frmPrincipale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim ii As Integer
            Dim MyRow As System.Data.DataRow
     
     
            'TODO: This line of code loads data into the 'Valeurs_nutritivesDataSet.FOOD_NM' table. You can move, or remove it, as needed.
            Me.FOOD_NMTableAdapter.Fill(Me.Valeurs_nutritivesDataSet.FOOD_NM)
            'TODO: This line of code loads data into the 'Valeurs_nutritivesDataSet.FOOD_GRP' table. You can move, or remove it, as needed.
            Me.FOOD_GRPTableAdapter.Fill(Me.Valeurs_nutritivesDataSet.FOOD_GRP)
     
            For ii = 0 To Valeurs_nutritivesDataSet.FOOD_GRP.Count - 1
                MyRow = Valeurs_nutritivesDataSet.FOOD_GRP(ii)
     
                cmbGrpAliments1.Items.Add(MyRow("FD_GRP_NMF"))
     
            Next
     
     
        End Sub
    Par la suite dans l'évènement "SelectedValueChanged" de la première liste déroulante, j'ai remplis la 2e liste déroulante avec le code ci-dessous.

    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 cmbGrpAliments1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbGrpAliments1.SelectedValueChanged
            Dim ii As Integer
            Dim MyRow As System.Data.DataRow
            Dim FoodGrpCode As String
     
            cmbAliment1.Items.Clear()
     
            For ii = 0 To Valeurs_nutritivesDataSet.FOOD_GRP.Count - 1
                MyRow = Valeurs_nutritivesDataSet.FOOD_GRP(ii)
     
                If MyRow("FD_GRP_NMF").ToString = cmbGrpAliments1.Text Then
                    FoodGrpCode = MyRow("FD_GRP_C")
                    Exit For
                End If
            Next
     
            For ii = 0 To Valeurs_nutritivesDataSet.FOOD_NM.Count - 1
                MyRow = Valeurs_nutritivesDataSet.FOOD_NM(ii)
     
                If MyRow("FD_GRP_C").ToString = FoodGrpCode Then
                    cmbAliment1.Items.Add(MyRow("L_FD_NMF"))
     
                End If
            Next
        End Sub
    Voilà, ce n'était pas plus compliqué que cela, je me compliquais la vie en esseyant d'utiliser les BondingSource. Il y a probablement une façon d'y arriver avec cela, mais je n'ai pas été en mesure d'y arriver n'y de trouver l'information nécessaire pour y arriver et cela malgré de nombreuses heures de recherche.

    Mais voilà que tout fini bien, j'ai le résultat escompté d'une autre façon.

    Par contre si jamais quelqu'un sait comment y arriver et désire m'en faire part ce serait bien apprécié, on en sait jamais trop.

    A la prochaine!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] liste déroulante remplis avec une valeur d'un champ
    Par adnanedelphi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/02/2011, 13h11
  2. Réponses: 4
    Dernier message: 25/05/2007, 15h25
  3. [AJAX] lier deux listes déroulantes alimenté par une base de données (Mysql)
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2007, 01h06
  4. Lier 2 listes déroulantes entre elles, et avec MySQL ?
    Par mLk92 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 30/08/2006, 16h01
  5. [MySQL] Une liste déroulante affichant les données d'une requête SHOW par ordre alphabétique
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/12/2005, 15h53

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