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 :

Alimenter Combobox (texte + valeur) via requete


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Alimenter Combobox (texte + valeur) via requete
    Bonsoir tout le monde

    Je reviens vers vous car j'ai un probleme pour alimenter une combobox avec une requete.

    J'arrive afficher du texte, mais derrier je n'arrive pas à affecter une valeure à chaque ligne.

    Voila comment je procède:

    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
            Dim strConnexion As String = "Data Source=localhost; Initial Catalog=Nomenclature; Integrated Security=SSPI"
            Dim MaBase As SqlConnection = New SqlConnection(strConnexion)
            MaBase.Open()
     
            Dim cd As New SqlCommand("select NomProduit, ID from Produit", MaBase)
            Dim rd As SqlDataReader
     
            rd = cd.ExecuteReader()
     
            ComboBox1.Items.Clear()
     
            Do While rd.Read()
                ComboBox1.Items.Add((rd.GetString(0)))
            Loop
     
            ComboBox1.SelectedItem = ComboBox1.Items(0)
     
            rd.Close()
            MaBase.Close()
    Comment faire pour affecter en 'value member' l'ID du produit?

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Salut,
    Pourquoi ne le fais-tu pas en deux fois ? une requete pour le texte et une pour l'ID...
    Essaye donc comme ça et tiens nous au courant.
    ~ Lola ~

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Surtout ne pas faire deux requêtes, c'est une hérésie.

    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
     Dim ConnectionString As String = "Data Source=localhost; Initial Catalog=Nomenclature; Integrated Security=SSPI"
            Dim Connection As New SqlConnection(strConnexion)
            Connection.Open()
     
            Dim Command As New SqlCommand("select NomProduit, ID from Produit", Connection)
            Dim Reader As SqlDataReader = Command.ExecuteReader()
     
            ComboBox1.Items.Clear()
     
            While Reader.Read()
                ComboBox1.Items.Add(New ListItem(Reader.GetString(0), CStr(Reader.GetInt32(1))))
            End While
     
            If ComboBox1.Items.Count > 0 Then
                ComboBox1.SelectedItem = ComboBox1.Items(0)
            End If
     
            Reader.Close()
            Connection.Close()
    Pour mettre le texte et la valeur il suffit d'ajouter à ta ComboxBox un élément de type Listitem(string text, string value)

  4. #4
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut Désolée
    En fait ce que je voulais dire c'est de récupérer les informations d'une seule requete SQL avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do Until (Not rd.Read())
        NomProduit = rd("NomProduit")
        IDProduit = rd("ID")
    Loop
    Je me suis mal exprimée et je m'en excuse !!!
    ~ Lola ~

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Merci pour vos réponses.

    Par contre, quand j'adapte le code ThomasR, j'a un message d'erreur me disant que
    "type ListItem is not defined"
    Le seul équivalent que j'ai trouvé est ListViewItem. Mon code est devenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Do While rd.Read()
                ComboBox1.Items.Add(New ListViewItem(rd.GetString(0), CStr(rd.GetInt32(1))))
            Loop
     
            If ComboBox1.Items.Count > 0 Then
                ComboBox1.SelectedItem = ComboBox1.Items(0)
            End If
    Malheureusement, ma combobox affiche maintenant ListViewItem: {Beurre} et je ne récupère aucune valeur derriere.

    Aurais-je loupé quelque chose?

    Pour info, j'utilise Visul Studio 2008

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    pourquoi tu le bind pas avec la methode non connecté ? C'est direct pas trop ligne de code...

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
            Dim strCon$ = CStr("provider=microsoft.jet.oledb.4.0;" & "data source= " & Application.StartupPath & "\Demandes.mdb" & ";")
            Dim CnEnreg As New OleDb.OleDbConnection
            Dim CmdR As New OleDb.OleDbCommand
            Dim DtsetRecherche As New DataSet
            Dim dtAdapteurRecherche As New OleDb.OleDbDataAdapter
            'Dim IEnum As IEnumerator
            CnEnreg.ConnectionString = strCon$
            Dim requete As String
     
            requete = "select Id_Client as [ID] ,Nom_client as [Nom Client] from Clients order by id_Client"
            CnEnreg.Open()
            CmdR = CnEnreg.CreateCommand() 'Creation de commande
            CmdR.CommandText = requete
     
            ' mode non connecté
     
            DtsetRecherche = New DataSet
            Try
     
                ' prepare le code pour afficher le resultat de la requete dans la datagridview
                dtAdapteurRecherche = New OleDb.OleDbDataAdapter
                dtAdapteurRecherche.SelectCommand = CmdR
                dtAdapteurRecherche.Fill(DtsetRecherche, "Clients")
                Me.DG_Clients.DataSource = DtsetRecherche.Tables("Clients")
                Me.DG_Clients.Columns.Item(0).Visible = False
                Me.DG_Clients.Refresh()
     
     
     
                CnEnreg = Nothing
                CmdR = Nothing
                dtAdapteurRecherche = Nothing
                'Objet déconnectée
                DtsetRecherche = Nothing
     
            Catch ex As OleDb.OleDbException
                MsgBox(ex.Message)
                CnEnreg = Nothing
                CmdR = Nothing
                dtAdapteurRecherche = Nothing
                'Objet déconnectée
                DtsetRecherche = Nothing
     
     
     
            End Try
            CnEnreg = Nothing
            CmdR = Nothing
            dtAdapteurRecherche = Nothing
            'Objet déconnectée
            DtsetRecherche = Nothing
    dans un autre post j'avais le meme prob et la solution que j'avais eu c'était celle avec du binding. tout le temps que le form reste en mémoire ou affiché, le binding fonctionne.

    je ne sais pas si ca va t'aider.

    Bonne journée

    AngelEvil!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Merci pour ta réponse mais malheuresement j'ai pas compris méthode

Discussions similaires

  1. Alimenter une table sql via une requete ?
    Par lastsql dans le forum Développement
    Réponses: 14
    Dernier message: 09/09/2010, 16h15
  2. creation de valeur via une requete impriquée
    Par laxe13 dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/12/2009, 14h31
  3. combobox et valeur de texte
    Par djdjo59 dans le forum VB.NET
    Réponses: 7
    Dernier message: 11/11/2009, 15h25
  4. comment alimenter une combobox à partir d'une requete
    Par joe12260 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/02/2009, 16h21
  5. [ComboBox] Retourner une valeur différente de ComboBox.Text
    Par nicolas.pied dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/02/2007, 20h01

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