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

Messages postés
32
Date d'inscription
mardi 11 décembre 2018
Statut
Membre
Dernière intervention
2 décembre 2019
- - Dernière réponse : Whismeril
Messages postés
14030
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 décembre 2019
- 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.
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
14030
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 décembre 2019
322
1
Merci
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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Whismeril
Messages postés
14030
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 décembre 2019
322 -
J'ai mis Math.Min, pour le cas où ta requête retournerait plus de 8 enregistrements
dragonfly22000
Messages postés
32
Date d'inscription
mardi 11 décembre 2018
Statut
Membre
Dernière intervention
2 décembre 2019
-
Salut Whismeril, ta solution fonctionne du feu de dieu , tu m'économises des heures de recherches.
Bon dimanche et merci encore.
Whismeril
Messages postés
14030
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 décembre 2019
322 -
De rien
Commenter la réponse de Whismeril