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

niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 - 29 juin 2012 à 16:08
zertyx Messages postés 14 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 31 juillet 2012 - 4 juil. 2012 à 12:54
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

niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 1
4 juil. 2012 à 08:08
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;
            
1
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
29 juin 2012 à 18:16
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
---
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
29 juin 2012 à 21:40
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
0
cs_BinKentsu Messages postés 64 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 22 juillet 2014 8
30 juin 2012 à 12:12
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 1
3 juil. 2012 à 08:26
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..
0
cs_BinKentsu Messages postés 64 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 22 juillet 2014 8
3 juil. 2012 à 19:01
Essaye voir de mettre oReader["parametre"].ToString();
Et vérifie que ta colonne s'appelle bien "parametre".

BinKentsu
0
zertyx Messages postés 14 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 31 juillet 2012 16
4 juil. 2012 à 12:54
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 ;-)
0
Rejoignez-nous