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#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    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.

  3. #3
    Membre confirmé
    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
    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 émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    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.

  5. #5
    Membre confirmé
    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
    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 : 251
Taille : 19,4 Ko

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

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

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

    J@ck.

+ 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