IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

C# Boucle "For" et "If "


Sujet :

C#

  1. #1
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut C# Boucle "For" et "If "
    salut

    ça Va?
    SVP
    j'ai besoin d'aide en c#
    voila cette procédure là
    Je veux insérer les numéros des clients sans répéter le même numéro avec une autre insertion
    mais la procédure stoppe après vérification si le numéro existe ou non
    merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "")
                {
                    MessageBox.Show("Inserer le Numero");
                }else
                    if (textBox1.Text != "")
                    {
                        for (int row = 0; row < dataGridView1.Rows.Count; row++)
                        {
                            for (int col = 0; col < dataGridView1.Columns.Count; col++)
                            {
                                if (dataGridView1.Rows[row].Cells[col].Value != null &&
                                  dataGridView1.Rows[row].Cells[col].Value.Equals(textBox1.Text.Trim()))
                                {
                                    MessageBox.Show(" Le numero exist dejà ");
                                }
                            }
                        }
                    }
     
                    else
                        if (textBox2.Text == "")
                        {
                            MessageBox.Show("Inserer le Nom");
                        }
                        else
                            if (textBox3.Text == "")
                            {
                                MessageBox.Show("Inserer le Prenom");
                            }
     else
                            {
                                cazoranConn.Open();
                                OleDbCmd.Connection = cazoranConn;
                                OleDbCmd.CommandText = "insert into persoone (Numero, Nom ,Prenom,Etat) values ('" + this.textBox1.Text + "','" + this.textBox2.Text + "','" + this.textBox3.Text + "' ,'" + this.comboBox1.Text + "');";
                                int temp = OleDbCmd.ExecuteNonQuery();
                                if (temp > 0)
                                {
                                    textBox1.Text = null;
                                    textBox2.Text = null;
                                    textBox3.Text = null;
     
                                    // show all 
                                    MessageBox.Show("Record Successfuly Added");
                                    dataGridView1.DataSource = null;
                                    dataGridView1.Rows.Clear();
                                    dataGridView1.Refresh();
     
                                    OleDbDataAdapter dAdapter = new OleDbDataAdapter("select * from persoone", connParam);
                                    OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter);
                                    DataTable dataTable = new DataTable();
                                    DataSet ds = new DataSet();
                                    dAdapter.Fill(dataTable);
     
                                    for (int i = 0; i < dataTable.Rows.Count; i++)
                                    {
                                        dataGridView1.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2], dataTable.Rows[i][3]);
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("Record Fail to Added");
                                }
                                cazoranConn.Close();
                            }
            }
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Pas facile à dire comme cela, tu dois prendre le code en debug pour voir ce qui se passe exactement et le contenu de tes différentes variables.

    Tu dois également utiliser les blocs Try - Catch pour intercepter les erreurs.

    Je pense toutefois que tu as un soucis dans tes boucles For car tu n'effectues pas un -1 à la valeur renvoyée par tes propriétés Count.

    Je pense que ceci serait plus correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for (int row = 0; row < dataGridView1.Rows.Count-1; row++)
    {
    	for (int col = 0; col < dataGridView1.Columns.Count-1; col++)
    	{
    		if (dataGridView1.Rows[row].Cells[col].Value != null && dataGridView1.Rows[row].Cells[col].Value.Equals(textBox1.Text.Trim()))
    		{
    			MessageBox.Show(" Le numero exist dejà ");
    		}
    	}
    }
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut
    Dans mon application et plus exact dans le "form" d'insertion j'ai les text box ou saisir les informations d'un clients

    et il y a le datagridview pour afficher le contenu de data-base

    mon idée et de vérifier si le numéro de client que j'ai entraine d’insérer il existe déjà dans le data gridview

    j'ai choisi la recherche dans le datagridview pour éviter le perd de temps en cherchant dans le data-base



    le problème est quand je tapie un numéro et click sur button insérer la verification inclure seulement le premier ligne de datagridview

  4. #4
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut
    Citation Envoyé par infosam76 Voir le message
    Pas facile à dire comme cela, tu dois prendre le code en debug pour voir ce qui se passe exactement et le contenu de tes différentes variables.

    Tu dois également utiliser les blocs Try - Catch pour intercepter les erreurs.

    Je pense toutefois que tu as un soucis dans tes boucles For car tu n'effectues pas un -1 à la valeur renvoyée par tes propriétés Count.

    Je pense que ceci serait plus correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for (int row = 0; row < dataGridView1.Rows.Count-1; row++)
    {
    	for (int col = 0; col < dataGridView1.Columns.Count-1; col++)
    	{
    		if (dataGridView1.Rows[row].Cells[col].Value != null && dataGridView1.Rows[row].Cells[col].Value.Equals(textBox1.Text.Trim()))
    		{
    			MessageBox.Show(" Le numero exist dejà ");
    		}
    	}
    }


    Merci bcq
    mais quand j'utilise ça
    le programme boucle sans arrêt

  5. #5
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Ben logiquement les "-1" sont nécessaire, vu que Count va renvoyé le nombre d'élément dans la collection (Par ex 30) et que l'index commence à 0 et non à 1

    Et je rajouterais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (int row = 0; row < dataGridView1.Rows.Count-1; row++)
    {
    	for (int col = 0; col < dataGridView1.Columns.Count-1; col++)
    	{
    		if (dataGridView1.Rows[row].Cells[col].Value != null && dataGridView1.Rows[row].Cells[col].Value.Equals(textBox1.Text.Trim()))
    		{
    			MessageBox.Show(" Le numero exist dejà ");
                            break;
    		}
    	}
    }
    pour sortir de la boucle si le numéro est trouvé. C'est plus une optimisation car à partir du moment ou tu le trouve une fois, inutile d'aller voir s'il y est plusieurs fois ...

    De plus, j'initialiserais plutôt un booléen que je testerais à la sortie des boucles pour afficher la boite de dialogue je trouve cela plus propre (le mieux serait de placer les 2 boucles imbriquées dans une fonction du style IsNumExist)
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Par défaut
    Bonjour,

    Alors je ne vais pas répondre à ta question, mais je vais relever une erreur que tu as faites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (textBox1.Text == "")
    {
        MessageBox.Show("Inserer le Numero");
    }
    else if (textBox1.Text != "")
    {
        ....
    }
    else 
    {
        // PARTIE DE CODE QUI NE SERA JAMAIS EXECUTE
    }
    Alors dans ta condition -textBox1.Text == ""- tu as que deux solutions possibles soit c'est vrai soit ce n'est pas vrai. textBox1.Text != "" étant l'inverse de ta première condition forcément vrai si l'autre est fausse. Je vais réécrire ton code en remplaçant les variables par des valeurs.
    Voila ce que tu as écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (true)
    {
        MessageBox.Show("Inserer le Numero");
    }
    else if (false)
    {
        ....
    }
    else 
    {
        // PARTIE DE CODE QUI NE SERA JAMAIS EXECUTE
    }
    Dans une condition True/False tu ne peux avoir que deux réponses ... donc ton else ne sera jamais exécute.

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Par défaut
    Pour ton problème, tu peux tout simplement utiliser un while et faire toi même la condition de sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    bool leave = false;
    while(!leave)
    {
        if(Condition de sortie)
        {
             leave = true;
        }
        else 
        {
           // CODE 
        }
    }

  8. #8
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    bien vu morgand ,mais c'est bien le mauvais emploi des if ...else qui est en cause....
    L'auteur du code semble ignore l'existence la clause "else if"...
    le code à revoir corrigee:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "") //GRAND IF
                {
                        MessageBox.Show("Inserer le Numero");
                      //SI OUI ON SORT DU GRAND IF 
                }
                else if (textBox1.Text != "")
                {
                        for (int row = 0; row < dataGridView1.Rows.Count; row++)
                        {
                            for (int col = 0; col < dataGridView1.Columns.Count; col++)
                            {
                                if (dataGridView1.Rows[row].Cells[col].Value != null &&
                                  dataGridView1.Rows[row].Cells[col].Value.Equals(textBox1.Text.Trim()))
                                {
                                    MessageBox.Show(" Le numero exist dejà ");
                                }
                            }
                        }
                    ///SI OUI ON SORT DU GRAND IF 
                }
                else if (textBox2.Text == "")
                {
                    MessageBox.Show("Inserer le Nom");
                    //SI OUI ON SORT DU GRAND IF 
                }
                else if (textBox3.Text == "")
                {
                    MessageBox.Show("Inserer le Prenom");
                    //SI OUI ON SORT DU GRAND IF 
                }
                else
                {
                    cazoranConn.Open();
                    OleDbCmd.Connection = cazoranConn;
                    OleDbCmd.CommandText = "insert into persoone (Numero, Nom ,Prenom,Etat) values ('" + this.textBox1.Text + "','" + this.textBox2.Text + "','" + this.textBox3.Text + "' ,'" + this.comboBox1.Text + "');";
                    int temp = OleDbCmd.ExecuteNonQuery();
                    if (temp > 0)
                    {
                        textBox1.Text = null;
                        textBox2.Text = null;
                        textBox3.Text = null;
     
                        // show all 
                        MessageBox.Show("Record Successfuly Added");
                        dataGridView1.DataSource = null;
                        dataGridView1.Rows.Clear();
                        dataGridView1.Refresh();
     
                        OleDbDataAdapter dAdapter = new OleDbDataAdapter("select * from persoone", connParam);
                        OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter);
                        DataTable dataTable = new DataTable();
                        DataSet ds = new DataSet();
                        dAdapter.Fill(dataTable);
     
                        for (int i = 0; i < dataTable.Rows.Count; i++)
                        {
                            dataGridView1.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2], dataTable.Rows[i][3]);
                        }
                        //SI OUI ON SORT DU GRAND IF 
                }
                else
                {
                    MessageBox.Show("Record Fail to Added");
                    //SI OUI ON SORT DU GRAND IF 
                } // FIN DU GRAND IF 
                    cazoranConn.Close();
                }
            }
    bon code....

  9. #9
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut
    Merci beaucoup


    Cordialement

  10. #10
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Un additif important: utilise les requêtes paramétrées. C'est un best-practice qui te protège des injections sql et offre d'autres avantages comme la gestion du format des dates.

  11. #11
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Par défaut
    Merci beaucoup M. Callo

  12. #12
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    S'il te plait, si ton problème est résolu, n'oublie pas de passer le post aussi à

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo