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 plusieurs combobox [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Lier plusieurs combobox
    Bonsoir, je suis debutant en vb.net j'essaie de developper une application de gestion de location, mais je galère j'essaie de relier 3 combobox, le premier est Résidences, le deuxieme "bloc" et le troisième "appartement" , j'aimerai filtrer je galere a trouver la requete, j'utilise ms-access comme sgbd
    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
            da = New OleDbDataAdapter("Select nom_res from Residences", MyConn)
            da.Fill(ds, "Residences")
            Dim view2 As New DataView(tables(0))
            With ComboBox2
                .DataSource = ds.Tables("Residences")
                .DisplayMember = "nom_res"
                .ValueMember = "nom_res"
                .SelectedIndex = 0
                .AutoCompleteSource = AutoCompleteSource.ListItems
            End With
            'Dim st As String
            'st = ComboBox2.SelectedValue.ToString()
            da = New OleDbDataAdapter("Select nom_bloc from bloc where id_res =" & ComboBox2.SelectedValue.ToString() & "", MyConn)
            'da.SelectCommand = New OleDb.OleDbCommand(MyConn)
            da.Fill(ds, "Bloc")
            Dim view3 As New DataView(tables(0))
            With ComboBox3
                .DataSource = ds.Tables("Bloc")
                .DisplayMember = "id_bloc"
                .ValueMember = "nom_bloc"
                .SelectedIndex = 0
            End With
            'st = ComboBox3.SelectedValue.ToString()
            da = New OleDbDataAdapter("Select num_app from appartement", MyConn)
            da.Fill(ds, "Appartement")
            Dim view4 As New DataView(tables(0))
            With ComboBox4
                .DataSource = ds.Tables("Appartement")
                .DisplayMember = "id_app"
                .ValueMember = "num_app"
                .SelectedIndex = 0
            End With
    ce code me genère une erreur de type "Informations supplémentaires : Erreur de syntaxe (opérateur absent) dans l'expression « id_res =Residence Seville »."
    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Je pense que l'erreur vient de la requête SQL qui est mal formée. Il manque des apostrophes autour de la valeur testée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    da = New OleDbDataAdapter("Select nom_bloc from bloc where id_res ='" & ComboBox2.SelectedValue.ToString() & "'", MyConn)
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour dorinf, j'ai essayé ta requete mais toujours le meme souçis, le deuxieme combobox reste vide

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Ce serait intéressant que tu mettes tout ton code, parce que, cela m'oblige à deviner.

    Avant que de formuler ma réponse, voici ce que je comprends de ton problème. Dans la partie non montrée de ton code, tu sembles avoir créé un DataSet et au moins une DataTable. Mais j'aurais bien aimé voir ta chaîne de connexion, parce que selon ta version de Visual Studio et ta version d'Access, (ou du moins de la version d'Access qui a servie à créer le fichier, la chaîne de connexion peut varier.

    Toujours si j'ai bien compris, les informations de ta base Access sont déjà dans la table de ton DataSet. Cela voudrait donc dire, qu'une fois que tu as récupéré tes informations de ta base Access dans ta DataTable interne, tu n'as plus besoin de requête SQL. Le DataView (plus léger, moins versatile et plus facile d'utilisation) et le BindingSource (plus lourd, plus versatile et plus compliqué) ont la capacité de filtrer une DataTable et même de créer à la volée une nouvelle table ou un tableau contenant juste les données filtrées. Même que la propriété "Filter" permet d'utiliser le ET logique et le OU logique (AND et OR). En prime, tu peux aussi trier et faire certains calculs.

    Voici donc comme je vois la chose :

    Dans un premier temps, tu charges ton premier ComboBox, avec la colonne correspondante de la DataTable que tu as récupérée d'Access et tu récupères la sélection dans une variable.

    Dans un deuxième temps, tu filtres ta deuxième colonne, en fonction de la réponse à ton premier combobox, tu charges ton deuxième combobox, et tu gardes la sélection dans une seconde variable.

    Dans un troisième temps, tu filtres ta troisième colonne en fonction du résultat de ton deuxième ComboBox, tu charges ton troisième combobox et tu gardes la sélection dans une troisième variable.

    Ensuite, tu combines tes trois sélections avec des AND et tu filtres toute ta table.

    En principe, tu devrais retrouver les résultats correspondant à tes trois ComboBoxes
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par Amrz22 Voir le message
    Bonjour dorinf, j'ai essayé ta requete mais toujours le meme souçis, le deuxieme combobox reste vide
    Toujours un soucis, peut-être. Toujours le même, peut-être pas. Tu avais un message d'erreur (Informations supplémentaires : Erreur de syntaxe (opérateur absent) dans l'expression « id_res =Residence Seville ».). L'as-tu encore suite à la modification de la requête SQL ?
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Je tiens a vous remercier pour votre aide, j'ai réussi à trouver la solution
    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
        Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged
     
            Dim appid As Integer = Convert.ToInt32(ComboBox3.SelectedValue.ToString())
                fillapp(appid)
            'ComboBox4.SelectedIndex = 0
     
        End Sub
        Private Sub fillapp(appid As Integer)
            Dim con As New OleDbConnection()
            Dim cmd As New OleDbCommand()
            cmd.Connection = MyConn
            cmd.CommandType = CommandType.Text
            cmd.CommandText = "SELECT id_app, Num_app FROM Appartement WHERE id_bloc =@appid"
            cmd.Parameters.AddWithValue("@appid", appid)
            Dim objDs As New DataSet()
            Dim dAdapter As New OleDbDataAdapter()
            dAdapter.SelectCommand = cmd
            'con.Open()
            dAdapter.Fill(objDs)
            'con.Close()
            If objDs.Tables(0).Rows.Count > 0 Then
                ComboBox4.DataSource = objDs.Tables(0)
                ComboBox4.ValueMember = "id_app"
                ComboBox4.DisplayMember = "num_app"
     
            End If
        End Sub
    ceci est un exemple de code pour remplir le combobox appartement grace a la selection du combobox "Bloc" maintenant tout marche à merveille , merci beaucoup

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

Discussions similaires

  1. [XL-2010] Lier plusieurs Combobox pour afficher dans une listbox
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/10/2015, 13h49
  2. Lier plusieurs ComboBox
    Par nico31300 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/03/2014, 16h09
  3. [XL-2007] Lier plusieurs combobox
    Par chrisss59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/03/2013, 10h16
  4. Comment lier une combobox à un input dans un formulaire?
    Par MisterCool dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 28/06/2006, 15h12
  5. [CR8] lier plusieurs report
    Par Damien69 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/10/2004, 14h17

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