[Debutant] Galere sur une boucle.

Résolu
dragonfly22000 Messages postés 49 Date d'inscription mardi 11 décembre 2018 Statut Membre Dernière intervention 13 avril 2021 - 1 juin 2019 à 12:06
Whismeril Messages postés 19044 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 mai 2024 - 2 juin 2019 à 11:03
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

Whismeril Messages postés 19044 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 mai 2024 656
Modifié le 1 juin 2019 à 15:01
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();


1
Whismeril Messages postés 19044 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 mai 2024 656
1 juin 2019 à 15:02
J'ai mis Math.Min, pour le cas où ta requête retournerait plus de 8 enregistrements
0
dragonfly22000 Messages postés 49 Date d'inscription mardi 11 décembre 2018 Statut Membre Dernière intervention 13 avril 2021
2 juin 2019 à 09:47
Salut Whismeril, ta solution fonctionne du feu de dieu , tu m'économises des heures de recherches.
Bon dimanche et merci encore.
0
Whismeril Messages postés 19044 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 mai 2024 656
2 juin 2019 à 11:03
De rien
0
Rejoignez-nous