Meilleur auteur de réponses
Comment stocker les résultats d'une requête dans un combobox

Question
-
Bonjour tout le monde,
Je dispose d'un formulaire Windows form et j'ai créer une requête au chargement de mon formulaire dont voici le code:
Private Sub forminscription_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load con.ConnectionString = "Data Source=WIN-DCM2QL793CF;Initial Catalog=maboutiquedb;Integrated Security=True" con.Open() Try Dim req As String = "SELECT * FROM groupes_utilisateurs" Dim execu As New SqlDataAdapter(req, con) Dim res As New DataSet execu.Fill(res) con.Close() Catch ex As Exception MsgBox(ex.Message) End Try End Sub
Ce que je n'arrive pas à faire c'est de stocker les résultats de la requête dans le combobox afin que les éléments de la liste déroulantes soient issus de la requête!
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged End Sub
Votre aide me serait très précieuse, merci d'avance!
onesat
Réponses
-
Bonjour
Voila comment je fais :
c'est surement pas la meilleur méthode, peut être que d'autres développeurs plus expérimentés ont une meilleure méthode.
- Proposé comme réponse Grégory_Nail mercredi 6 août 2014 15:16
- Marqué comme réponse Aurel BeraModerator mercredi 13 août 2014 07:01
Toutes les réponses
-
Bonjour
Voila comment je fais :
c'est surement pas la meilleur méthode, peut être que d'autres développeurs plus expérimentés ont une meilleure méthode.
- Proposé comme réponse Grégory_Nail mercredi 6 août 2014 15:16
- Marqué comme réponse Aurel BeraModerator mercredi 13 août 2014 07:01
-
Bonjour
Le mieux c'est de utilizer le DataBinding. Je vous propose ce code :
ComboBox1.DataSource = ds.Tables(0) ComboBox1.ValueMember = "Id" ComboBox1.DisplayMember = "Nom"
Pour ValueMember vous spécifies le nom de la colonne dans le DataTable qui sera le SelectedItem.Value.
DisplayMember c'est le nom de la colonne dans le DataTable qui sera affichée dans le ComboBox.
Bien cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. -
Ok Aurel BERA, j'ai adapter ton code a mon projet et sa fonctionne:
Private Sub forminscription_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load con.ConnectionString = "Data Source=WIN-DCM2QL793CF;Initial Catalog=maboutiquedb;Integrated Security=True" con.Open() Try Dim req As String = "SELECT * FROM groupes_utilisateurs" Dim execu As New SqlDataAdapter(req, con) Dim res As New DataSet execu.Fill(res) con.Close() ComboBox1.DataSource = res.Tables(0) ComboBox1.ValueMember = "id_grp" ComboBox1.DisplayMember = "nom_grp" Catch ex As Exception MsgBox(ex.Message) End Try End Sub
maintenant ce qui me reste c'est comment définir une valeur par défaut pour mon combobox! Encore un coup de pouce!
onesat
-
-
Ou plus simple:
MyComboBox.SelectedIndex = 2
Bien cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. -
-
-
Vous avez essayé?
Cela ne fonctionne pas normalement, soit vous remplissez le CoboBox en ajoutant les éléments 1 par 1 comme dans l'exemple de Grégory_Nail soit vous modifies la source de données en ajoutant au DataTable une ligne.
Bien cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. -
-
Grégory_Nail Je n'ai pas vu que c'est votre réponse, j'ai cru que c'est onesatforever.
Comme j'ai déjà dit dans mon message, avec votre code il fonctionne bien.
Avec le mien on doit trouver une astuce - modifier la source de données.
Bien cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. -
J'ai fais ceci mais non!
Private Sub forminscription_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load con.ConnectionString = "Data Source=WIN-DCM2QL793CF;Initial Catalog=maboutiquedb;Integrated Security=True" con.Open() Try Dim req As String = "SELECT * FROM groupes_utilisateurs" Dim execu As New SqlDataAdapter(req, con) Dim res As New DataSet execu.Fill(res) con.Close() ComboBox1.Items.Add("--Selectionner un groupe--") ComboBox1.SelectedIndex = 0 ComboBox1.DataSource = res.Tables(0) ComboBox1.ValueMember = "id_grp" ComboBox1.DisplayMember = "nom_grp" Catch ex As Exception MsgBox(ex.Message) End Try End Sub
La combobox1 est alimentée mais sans --Selectionner un groupe-- comme valeur par défaut!
onesat
-
-
-
Je tiens beaucoup à vous remerciez pour l'intérêt que vous avez accorder a mon sujet et la pertinence de vos différentes propositions!
Bon, suite à vos différentes propositions ce bout de code me semble être la meilleur solution:
Private Sub forminscription_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ComboBox1.Items.Add("--Selectionner un groupe--") ComboBox1.SelectedIndex = 0 con.ConnectionString = "Data Source=WIN-DCM2QL793CF;Initial Catalog=maboutiquedb;Integrated Security=True" con.Open() Try Dim req As String = "SELECT * FROM groupes_utilisateurs" Dim execu As New SqlDataAdapter(req, con) Dim res As New DataSet execu.Fill(res) con.Close() For Each oRow As DataRow In res.Tables("Table").Rows ComboBox1.ValueMember = "id_grp" ComboBox1.DisplayMember = ComboBox1.Items.Add(oRow.Item("nom_grp")) Next Catch ex As Exception MsgBox(ex.Message) End Try End Sub
Mon objectif est:
1) Alimenter la combobox1 suite au résultat d'une requête de sorte que les valeurs de mon combobox1 (Combobox1.ValueMember) soient le SelectedItem.Value et Combobox1.DisplayMember le nom de la colonne qui sera affichée dans le Combobox1.
2) --Sélectionner un groupe-- soit le texte sélectionner par défaut dans le combobox et pour valeur 0
3) Suite a un traitement des champs de mon formulaire, je voudrais récupéré les valeurs (Combobox1.ValueMember="id_grp") pour les insérer dans une autre table.
Maintenant je demande juste votre avis sur ce présent code et encore une fois THANKS!
onesat
-
Voici mon code complet:
Imports System.Data.SqlClient Public Class forminscription Dim con As New SqlConnection Private Sub forminscription_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ComboBox1.Items.Add("--Selectionner un groupe--") ComboBox1.SelectedIndex = 0 con.ConnectionString = "Data Source=WIN-DCM2QL793CF;Initial Catalog=maboutiquedb;Integrated Security=True" con.Open() Try Dim req As String = "SELECT * FROM groupes_utilisateurs" Dim execu As New SqlDataAdapter(req, con) Dim res As New DataSet execu.Fill(res) con.Close() For Each oRow As DataRow In res.Tables("Table").Rows ComboBox1.ValueMember = "id_grp" ComboBox1.DisplayMember = ComboBox1.Items.Add(oRow.Item("nom_grp")) Next Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub btajout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btajout.Click con.Open() Try Dim cmd As New SqlCommand(("INSERT INTO utilisateurs VALUES ('" & _ txtidutili.Text & "','" & _ ComboBox1.Text & "','" & _ txtnomutili.Text & "','" & _ txtmdp.Text & "','" & _ txtnomfautili.Text & "','" & _ txtprenomutili.Text & "','" & _ txtemailutili.Text & "','" & _ txtbputili.Text & "', SYSDateTime(), '" & _ txtetatcompte.Text & "','" & _ txtnumteleutili.Text & "')"), con) cmd.ExecuteNonQuery() con.Close() MsgBox("Success ...", MsgBoxStyle.Information, "L'utilisateur a ete correctement ajouter") txtidutili.Focus() Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged End Sub End Class
Et quand j'exécute mon code, j'ai ce message d'erreur:
Echec de la conversion de la valeur varchar 'Administrateur en type de données int.Coup de main please!
onesat
-
Si vous voulez modifier la source de données le plus simple c'est de utiliser la solution proposée par Grégory_Nail(mercredi 6 août 2014 15:16 ), évidement après avoir ajoute l'élément implicite avec :
ComboBox1.Items.Add("--Selectionner un groupe--")
ComboBox1.SelectedIndex = 0Dans le cas où vous voulez utiliser exactement la source de données, sera indiqué d’utiliser le DataBinding.
Bien cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.