Comment récupérer le résultat d'une requete sql dans un combobox

Signaler
Messages postés
30
Date d'inscription
lundi 9 avril 2012
Statut
Membre
Dernière intervention
17 juillet 2014
-
Messages postés
14
Date d'inscription
dimanche 23 novembre 2008
Statut
Membre
Dernière intervention
31 juillet 2012
-
Salut a toute la communauté.

je voudrait recourir a votre aide en vous demandant de m'aider
à resoudre mon probleme.

en fait je voudrais savoir comment recuperer le resultat d'une requete sql
dans un combobox.
Ici donc je veux recupérer tous les enregistrements du champ "paramatre"
jé essayer avec des exemples que jé trouvé sur le forum mé ca na pas marché.
Mon code est celui-ci:


private void cmbBox_SelectedIndexChanged(object sender, EventArgs e)
{

maConnexion.Close();
maConnexion.Open();

string strRequete = "select parametre from table_parametrage";
SqlCommand maCommande = new SqlCommand(strRequete,maConnexion);
SqlDataReader oReader = maCommande.ExecuteReader();

try
{

while (oReader.Read())
{
cmbBox.Items.Add(oReader["parametre"]);
}
}
finally
{
oReader.Close();
}
}

si quelqu'un peut m'aider je lui serai tres reconnaissant car ca fait des heures
et des heures que je n'ai pas trouvé de solution.merci encore pour votre aide..

7 réponses

Messages postés
30
Date d'inscription
lundi 9 avril 2012
Statut
Membre
Dernière intervention
17 juillet 2014
1
Merci BinKentsu,

ca je l'avais essayé mais en vain.Mais j'ai pu résoudre
la question.Je vais mettre le code tout en esperant que ca pourrait
servir d'aide.En tout cas merci pour ton aide c'est très gentil..


            DataTable table = new DataTable();
            table.Columns.Add("parametre",typeof(System.String));
            this.cmbBox.DataSource = table;


            string requete = " select parametre from table_parametrage;
            SqlCommand maCommande = new SqlCommand(requete, maConnexion);
            SqlDataReader oReader = maCommande.ExecuteReader();
            this.cmbBox.DisplayMember = "parametre";
            table.Load(oReader);
            this.cmbBox.SelectedIndex = -1;
            
Messages postés
14756
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
9 janvier 2021
151
Bonjour,

"mé ca na pas marché"
Merci d'écrire correctement

Et en détail, ça donne quoi ce "ça n'a pas marché" ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Messages postés
15384
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 janvier 2021
499
Bonsoir,

je ne faits pas de sql, mais il me semble que la lecture des données être appelée au chargement du formulaire, ou dans un bouton rafraichir, dans un menu etc..

Mais dans l'événement SelectedIndexChanged du combobox que tu charges ça doit forcément planter.
Ta boucle while charge toutes les données et les mets dans le combo, ce faisant l'index change probablement et ça se reproduit à l'infini


Whismeril
Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
7
Bonjour,

Pour récupérer les valeurs de ta table et les mettre dans un combobox tu dois modifier juste un petit détail :

Modifier
cmbBox.Items.Add(oReader["parametre"]);
par
cmbBox.Items.Add(oReader.GetValue(0).ToString());


Tu aurais donc :
private void cmbBox_SelectedIndexChanged(object sender, EventArgs e)
{
  maConnexion.Close();
  maConnexion.Open();

  string strRequete = "select parametre from table_parametrage";
  SqlCommand maCommande = new SqlCommand(strRequete,maConnexion);
  SqlDataReader oReader = maCommande.ExecuteReader();

  try
  {
    while (oReader.Read())
    {
      cmbBox.Items.Add(oReader.GetValue(0).ToString());
    }
  }
  finally
  {
    oReader.Close();
  }
} 


BinKentsu
Messages postés
30
Date d'inscription
lundi 9 avril 2012
Statut
Membre
Dernière intervention
17 juillet 2014
1
Merci NHenry, au fait quand je compile mon programme
les valeurs ne se chargent pas dans mon combo.
j'ai meme essayé d'aporter des modifications proposées
par BinKentsu:

cmbBox.Items.Add(oReader["parametre"]);

par:
cmbBox.Items.Add(oReader.GetValue(0).ToString());

mais ca pas du tout marché

si vous avez une reponse a me proposer je vous en serai très
reconnaissant.je vous remercie encore une fois..
Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
7
Essaye voir de mettre oReader["parametre"].ToString();
Et vérifie que ta colonne s'appelle bien "parametre".

BinKentsu
Messages postés
14
Date d'inscription
dimanche 23 novembre 2008
Statut
Membre
Dernière intervention
31 juillet 2012
14
salut;
ben heureusement que ça marche pour toi. dans tous les cas il suffisais d'utiliser une "srting" intermédiaire pour passe tes champs comme suite:
SqlCommand command = new SqlCommand("SELECT * FROM une table)", connexion);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string text = reader.GetString(0);
cmbBox.Items.Add(text);
}
aussi la solution présenté par "BinKentsu" doit fonctionner.
Bon courage ;-)