[Debutant] Galere sur une boucle. [Résolu]

Signaler
Messages postés
42
Date d'inscription
mardi 11 décembre 2018
Statut
Membre
Dernière intervention
28 juillet 2020
-
Messages postés
14784
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 septembre 2020
-
Bonjour,
Bonjour, Je galère pour faire une boucle ,en fait je ne sais pas du tout comment l’écrire.
Voici le bout de mon code:
 string sqlcommande1 = "SELECT SPOT,PATCH,TYPE,WATTAGE FROM LIGHT WHERE CIRCUITNUMBER = 1 AND CIRCUITNAME = @nomCable ";
            String nomCable1 = comboBox1.Text;
            SqlDataAdapter bla1 = new SqlDataAdapter();
            bla1.SelectCommand = new SqlCommand(sqlcommande1, connection);
            bla1.SelectCommand.Parameters.AddWithValue("@nomCable", nomCable1);
            DataTable dt = new DataTable();
            bla1.Fill(dt);
            try
            {
                {
                    object Channel1 = dt.Rows[0][0];
                    object Channel2 = dt.Rows[1][0];
                    object Channel3 = dt.Rows[2][0];
                    object Channel4 = dt.Rows[3][0];
                    object Channel5 = dt.Rows[4][0];
                    object Channel6 = dt.Rows[5][0];
                    object Channel7 = dt.Rows[6][0];
                    object Channel8 = dt.Rows[7][0];
                    object Patch = dt.Rows[0][1];
                    object Type = dt.Rows[0][2];

                    int sum1 = 0;
                    for (int i = 0; i < dt.Rows.Count; ++i)
                    {
                        sum1 += Convert.ToInt32(dt.Rows[i][3].ToString());
                    }

                    Channel1Wattlabel.Text = sum1.ToString();
                    Channel1Adresslabel.Text = Patch.ToString();
                    Channel1Typelabel.Text = Type.ToString();
                    Channel1Alabel.Text = Channel1.ToString();
                    Channel1Blabel.Text = Channel2.ToString();
                    Channel1Clabel.Text = Channel3.ToString();
                    Channel1Dlabel.Text = Channel4.ToString();
                    Channel1Elabel.Text = Channel5.ToString();
                    Channel1Flabel.Text = Channel6.ToString();
                    Channel1Glabel.Text = Channel7.ToString();
                    Channel1Hlabel.Text = Channel8.ToString();
                    label29.Text = Channel1Wattlabel.Text.ToString();
                }
            }


            catch (Exception ex)
            {
                MessageBox.Show("Hors Limite", ex.Message);
            }
        }


Voila tout fonctionne très bien si ma requête Sql me renvoie 8 lignes qui me permettent de remplir mes label.Text.
Mon problème c'est que ma requête Sql ne me renvois pas toujours 8 lignes (en fonction de ce qu'il y a dans la base de données).
Donc Quand j'ai moins de 8 lignes ça me met une exception 'System.IndexOutOfRangeException'.....Normal.
J'aurais donc voulu faire une boucle qui me remplirais mes label.Text en fonction du nombres de lignes récupérées via ma requêtes Sql.
Mais je ne sais absolument pas par ou commencer.
Merci d'avance pour vos pistes.
Cordialement.

1 réponse

Messages postés
14784
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 septembre 2020
437
Bonjour,

tapé de tête et pas testé
Label[] mesLabels = {   Channel1Alabel, Channel1Blabel, Channel1Clabel, Channel1Dlabel, Channel1Elabel, Channel1Flabel, Channel1Glabel, Channel1Hlabel};

for(int i = 0; i < Math.Min(8, dt.Rows.Count); i++)
       mesLabels[i].Text = dt.Rows[i][0].ToString();


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
14784
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 septembre 2020
437
J'ai mis Math.Min, pour le cas où ta requête retournerait plus de 8 enregistrements
Messages postés
42
Date d'inscription
mardi 11 décembre 2018
Statut
Membre
Dernière intervention
28 juillet 2020

Salut Whismeril, ta solution fonctionne du feu de dieu , tu m'économises des heures de recherches.
Bon dimanche et merci encore.
Messages postés
14784
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 septembre 2020
437
De rien