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#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 
        }
    }

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