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 :

Enregistrement d'un datagridview


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut Enregistrement d'un datagridview
    Salut,

    Le code ci-dessous fait l'enregistrement des éléments d'un datagridview. Je souhaiterais enregistrer uniquement les champs renseignés des colonnes du datagridview. C'est à dire faire des contrôles sur le detagrid de sorte à récupérer seulement les champs dont la valeur n'est pas nulle.


    merci de pour votre aide.

    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
     private void button1BIAO_Click(object sender, EventArgs e)
            {
                string message = "ENREGISTRER LES INFORMATIONS ?";
                string titre = "ENREGISTREMENT";
     
                DateTime dateValue = DateTime.Today;
                //DateTime dateValue = new DateTime(2016, 11, 13);
     
                string date2 = Convert.ToString(dateValue).Replace("/", "");
                string datejour = date2.Substring(0, 8);
                string reference = datejour;
     
     
                //On recupere le nomnre total d'enregistrement present dans le datagridview
     
                Int32 l = Convert.ToInt32(dataGridView1.RowCount.ToString());
     
                DialogResult reponse = MessageBox.Show(this, message, titre, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (reponse == DialogResult.Yes)
                {
     
                    try
                    {
                        OdbcConnection maconnexion = cls.ouvrirConnection(ClassGle.chaine);
                        int i = 0;
                        string user_tache = CONNEXION.login;
     
                        // On recupere de saisir des taches
                        DateTime heure_tache = DateTime.Now;
                        string heure = Convert.ToString(heure_tache);
                        string heure_t = heure.Substring(10, 9);
     
     
                        while (i < l)
                        {
                            string reket = "insert into tableau_bord(reference,periode,tache_execute,user_tache,observation_tache, heure_execution,motif_retard_execution_tache) values('" + reference + "','" + dataGridView1.Rows[i].Cells[2].Value.ToString().Replace("'", "''") + "','" + dataGridView1.Rows[i].Cells[1].Value.ToString().Replace("'", "''") + "','" + user_tache + "','" + dataGridView1.Rows[i].Cells[4].Value.ToString().Replace("'", "''") + "','" + heure_t + "','" + null + "')";
                            OdbcDataReader lire = cls.ouvrirRequète(reket, maconnexion); 
                            i++;
                        }
     
                        MessageBox.Show("Enregistrement effectue avec succès", "INFORMATION", MessageBoxButtons.OK);
                        RAFRAICHE_ENREG();
                    }
                    catch (Exception ex)
                    { MessageBox.Show(ex.Message); 
                    }
     
                } 
            }

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Je ne vois pas de question dans ton post, je considère donc que ce que tu ne sais pas faire c'est
    C'est à dire faire des contrôles sur le detagrid de sorte à récupérer seulement les champs dont la valeur n'est pas nulle.
    Il te faudra donc parcourir les lignes de ta Datagridview, soit quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach(DataRow r in dataGridView1.Rows)
    {
    ...//tests sur les cellules
    }
    Puis faire des tests sur les cellules de la ligne, soit quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(!Convert.IsDBNull(r["nomDeLaColonneDeLaDataTable"]))
    {
    ...//traitement sur la ligne 
    }
    Maintenant je pense que tu es conscient que ton code n'est pas très joli joli , pas de notion d'object, pas de séparation des couches ... De plus que se passe-t-il si l'enregistrement existe déjà en base ? tu n'as pas de clé primaire ?
    Bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Salut J@ckHerror et merci pour ta réponse.

    Je suis d'accord avec le fait de parcourir toutes les lignes de mon datagridview. Mais selon moi si le contrôle se fait seulement sur une ou des colonnes, cela reviendrait à annuler ou refuser tous les enregistrements.

    Mon objectif est que, je veux seulement enregistrer dans ma bdd les lignes du datagridview où nous avons la colonne "Observation" renseignée.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par degio1er Voir le message
    Mais selon moi si le contrôle se fait seulement sur une ou des colonnes, cela reviendrait à annuler ou refuser tous les enregistrements.
    Pas d'accord ou alors j'ai pas compris ton problème.
    Si je synthétise les 2 bouts de code que je t'ai donné =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach(DataRow r in dataGridView1.Rows)
    {
        if(!Convert.IsDBNull(r["nomDeLaColonneDeLaDataTable"]))
        {
        ...//traitement sur la ligne donc dans ce cas ton insert...
        }
    }
    Ce bout de code boucle sur les lignes d'une datagridview et en ignorera certaines en fonction de tes tests réalisés dans le if... donc seules celles qui passerons le test pourront être insertées en base.

    Bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Le code suivant renvoi une erreur :

    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
     
     foreach(DataRow r in dataGridView1.Rows)
                            {
     
                                if (!Convert.IsDBNull(r["observation_tache"]))
     
                                { 
                                    string reket = "insert into tableau_bord(reference,periode,code_tache, tache_execute,user_tache,observation_tache, heure_execution,motif_retard_execution_tache) values('" + reference + "','" + dataGridView1.Rows[i].Cells[2].Value.ToString().Replace("'", "''").ToUpper()  + "','" + dataGridView1.Rows[i].Cells[0].Value.ToString().Replace("'", "''") + "','" + dataGridView1.Rows[i].Cells[1].Value.ToString().Replace("'", "''") + "','" + user_tache + "','" + dataGridView1.Rows[i].Cells[4].Value.ToString().Replace("'", "''").ToUpper() + "','" + heure_t + "','" + null + "')";
                                    OdbcDataReader lire = cls.ouvrirRequète(reket, maconnexion);
                                    i++;
                                }
                                else
                                {
                                    MessageBox.Show("Renseigner le champs observation");
                                }
                            }
    Nom : err.JPG
Affichages : 205
Taille : 19,4 Ko

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Remplace DataRow par DataGridViewRow

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    DataRow remplacé par DataGridViewRow.

    Le code ci-dessous enregistre toutes les lignes dans ma base. Je souhaite enregistrer uniquement dans ma bdd les lignes du datagridview où nous avons la colonne "Observation" renseignée.

    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
     
     foreach (DataGridViewRow r in dataGridView1.Rows)
                            {
     
                                if (!Convert.IsDBNull(r.Cells[4]))
                                {
                                    string reket = "insert into tableau_bord(reference,periode,code_tache, tache_execute,user_tache,observation_tache, heure_execution,motif_retard_execution_tache) values('" + reference + "','" + dataGridView1.Rows[i].Cells[2].Value.ToString().Replace("'", "''").ToUpper() + "','" + dataGridView1.Rows[i].Cells[0].Value.ToString().Replace("'", "''") + "','" + dataGridView1.Rows[i].Cells[1].Value.ToString().Replace("'", "''") + "','" + user_tache + "','" + dataGridView1.Rows[i].Cells[4].Value.ToString().Replace("'", "''").ToUpper() + "','" + heure_t + "','" + null + "')";
                                    OdbcDataReader lire = cls.ouvrirRequète(reket, maconnexion);
                                    i++;
                                }
                                else
                                {
                                    MessageBox.Show("Renseigner le champs observation");
     
                                }
                            }

  8. #8
    Membre du Club Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Points : 67
    Points
    67
    Par défaut
    Salut degio1er

    Je veux bien t'aider mais je n'arrive pas trop à comprendre ce que tu voulais dire.

    Le code ci-dessous enregistre toutes les lignes dans ma base. Je souhaite enregistrer uniquement dans ma bdd les lignes du datagridview où nous avons la colonne "Observation" renseignée.
    Tu veux juste enregistrer la colonne "Observation" dans ta bdd ?

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Je ne voudrais pas être trop condescendant mais là faut m'expliquer.. je vois "Développeur informatique" dans ta présentation, et là, avec un code qui enregistre toutes les lignes, tu n'arrives pas à obtenir un code qui enregistre que quelques lignes... Bref tu ne semble pas vouloir faire beaucoup d'effort et surestimer un peu ton niveau.
    Si tu ne comprends pas quelque chose dans le code que l'on te donne dis le nous et on t'expliquera ... c'est la l'intérêt d'un forum, se faire expliquer des notions que l'on a du mal à saisir. Non pas de recopier du code tout fait qui de toute façon ne sera jamais exactement le code adapté à ton problème...

    Donc pour ton problème je te propose d'utiliser des instructions conditionnelles pour filtrer les lignes que tu veux enregistrer ou non ...

    J@ck
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Salut,

    merci à tous.Problème resolu avec le code ci-dessous. j'ai dû trouver un autre fonctionnement pour l'enregistrement dans la base de données.

    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
     
     // Nous allons enregistrer dans la base les controles où le champs statut a été coché
     
                        for (int i = 0; i < dataGridView1.Rows.Count; i++)
                        {
                            DataGridViewCell statut = dataGridView1[5, i];
     
                            if (statut is DataGridViewCheckBoxCell)
                            {
                                bool cellChecked = false;//bool cocher pas cocher.
     
                                if (statut.Value != null)
                                {
                                        cellChecked = Convert.ToBoolean(statut.Value);
     
                                        string reket_code = "select count(code_tache) as counts from tableau_bord where code_tache='" + dataGridView1.Rows[i].Cells[0].Value.ToString().Replace("'", "''") + "' and statut_tache = 'False' and reference ='" + CONNEXION.reference + "' and service = '" + CONNEXION.service + "'";
                                        OdbcDataReader lirereket_code = cls.ouvrirRequète(reket_code, maconnexion);
     
                                        while (lirereket_code.Read())
                                       {
                                           int code = Convert.ToInt32(lirereket_code["counts"]);
     
                                           if (code == 1)
                                           {
                                               if (cellChecked == true)
                                               {
                                                   string reket2 = "update tableau_bord set observation_tache='" + dataGridView1.Rows[i].Cells[4].Value.ToString().Replace("'", "''").ToUpper() + "',statut_tache='" + cellChecked + "', user_tache='" + CONNEXION.login + "', heure_execution = '" + dataGridView1.Rows[i].Cells[3].Value.ToString().Replace("'", "''") + "', heure_saisie ='" + heure_t + "' where reference='" + CONNEXION.reference + "' and code_tache='" + dataGridView1.Rows[i].Cells[0].Value.ToString().Replace("'", "''") + "' and statut_tache='False' and service = '" + CONNEXION.service + "' ;";
                                                   OdbcDataReader lirereket2 = cls.ouvrirRequète(reket2, maconnexion);
                                               }
                                           }
                                           else
                                           {
                                               string reket = "insert into tableau_bord(reference,periode,code_tache, tache_execute,user_tache,statut_tache,observation_tache, heure_execution, heure_saisie, service) values('" + CONNEXION.reference + "','" + dataGridView1.Rows[i].Cells[2].Value.ToString().Replace("'", "''").ToUpper() + "','" + dataGridView1.Rows[i].Cells[0].Value.ToString().Replace("'", "''") + "','" + dataGridView1.Rows[i].Cells[1].Value.ToString().Replace("'", "''") + "','" + user_tache + "', '" + Convert.ToString(cellChecked) + "','" + dataGridView1.Rows[i].Cells[4].Value.ToString().Replace("'", "''").ToUpper() + "','" + dataGridView1.Rows[i].Cells[3].Value.ToString() + "','" + heure_t + "', '" + CONNEXION.service + "')";
                                               OdbcDataReader lire = cls.ouvrirRequète(reket, maconnexion);
     
                                               string reket2 = "update tableau_bord set user_tache='" + null + "', heure_saisie ='" + null + "' where reference='" + CONNEXION.reference + "' and statut_tache='False' and service = '" + CONNEXION.service + "'";
                                               OdbcDataReader lirereket2 = cls.ouvrirRequète(reket2, maconnexion);
     
                                           }
     
                                       }
     
                                 }
                                //i++;
                            }
                         }
     
     
                        MessageBox.Show("Enregistrement effectue avec succès", "INFORMATION", MessageBoxButtons.OK);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Modifier un enregistrement d'un DataGridView déja filtré
    Par Bakkach dans le forum VB.NET
    Réponses: 1
    Dernier message: 30/04/2013, 07h54
  2. Afficher des enregistrement dans un DataGridView
    Par Mohiiz dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/10/2009, 15h28
  3. Supression d'enregistrement d'un DataGridView
    Par Marc_27 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 06/07/2009, 11h30
  4. Ordre des enregistrements dans un DataGridView
    Par tssi555 dans le forum VB.NET
    Réponses: 6
    Dernier message: 25/08/2008, 13h15
  5. Enregistrer, ouvrir une datagridview
    Par piepio dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/02/2007, 13h55

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