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

Windows Forms Discussion :

[VB.NET] Remplir une ComboBox avec une requete sql


Sujet :

Windows Forms

  1. #1
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut [VB.NET] Remplir une ComboBox avec une requete sql
    Bonjour,
    J'aimerais remplir une combo box avec le resultat d'une requete sql.
    Pour l'instant je peux me connecter et executer ma requete:
    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
     
           Dim con As New SqlConnection(connString)
            Dim dr As SqlDataReader
            Dim myCommand As SqlCommand
            Dim sql As New StringBuilder
     
            sql.Append("select distinct ViewTable ")
            sql.Append("from Fields where ViewTable in ")
            sql.Append("(select table_name ")
            sql.Append("from information_schema.tables ")
            sql.Append("where table_type='VIEW')")
     
            Dim test As String = sql.ToString
            myCommand = New SqlCommand(sql.ToString, con)
     
            con.Open()
            dr = myCommand.ExecuteReader()
            con.Close()
    Mais je ne sais pas comment remplir ma combo box. Je ne veux pas utiliser la fenetre Propriete de visual studio. Je veux le faire a la main
    Merci pour votre aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Points : 157
    Points
    157
    Par défaut
    il faut utiliser les propriétés suivantes :

    Combo.DataTextField = Nom du champs à utiliser pour le libellé
    Combo.DataValueField = Nom du champs à utiliser pour la value
    Combo.DataSource = Source de données (DataSource, ArrayList etc...)
    Combo.DataBind(); = permet de binder les données

  3. #3
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Merci
    Moi je pensais plus a un truc du genre (a la suite de mon code existant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    While dr.Read
                cmbObjects.Items.Add(valeurs de dr)
                dr.NextResult()
     
    End While
    mais je sais pas ocmment lire les valeurs de dr ??[/code]

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Points : 157
    Points
    157
    Par défaut
    La solution que je t'ai proposé se nomme "DataBinding" c'est la plus propre je pense

    sinon pour chaque dr tu utilises dr["Nom du champs"].toString();

  5. #5
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Merci
    Ta solution est sans doute meilleur mais je suis tetu
    J'ai qd meme un souci, la boucle suivante quitte apres le premier resultat du datareader:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
           dr = myCommand.ExecuteReader()
            While dr.Read
                cmbObjects.Items.Add(dr("ViewTable").ToString)
                Dim test As String = dr("ViewTable").ToString
                dr.NextResult()
            End While
    Du coup je ne peux remplir ma combo qu'avec la premiere valeur du datareader. Ma requete sql renvoie beaucoup plus d'enregistrements (j'ai teste dans le query analyser de sqlserver)
    D'ou cela peut il venir ?
    : Merci

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 310
    Points : 157
    Points
    157
    Par défaut
    Pas la peine de faire un NextResult

    Le Read() fait a mon avis le nextresult tout seul d'ou la boucle

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Voici Comment je rempli mes ComboBox et cela fonctionne...

    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
     
     
    Try
                    Dim ssceconn As New SqlCeConnection("Data Source = " & Module1.g_EmplacementBaseLieux)
                    Dim Mycommand As SqlCeCommand = ssceconn.CreateCommand()
                    Mycommand.CommandText = temp
                    ssceconn.Open()
                    Dim myReader As SqlCeDataReader = Mycommand.ExecuteReader()
                    ComboBox.Items.Clear()
                    Do While myReader.Read()
                         ComboBox.Items.Add(myReader.GetString(0))
                    Loop
                    myReader.Close()
                    ssceconn.Close()
     
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Remplir une ComboBox avec une plage de cellule
    Par zazaraignée dans le forum Contribuez
    Réponses: 2
    Dernier message: 02/03/2012, 18h07
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. [VBA-E] Comment remplir une comboBox avec une macro
    Par Tchupacabra dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/04/2007, 11h16

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