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 :

Modification des données


Sujet :

C#

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 36
    Points : 20
    Points
    20
    Par défaut Modification des données
    Bonsoir , trés contente d'avoir un compte sur developpez.com

    Bon je suis une grande débutante en C# , j'ai une application sous visual studio.net et uen base de données sous sql server

    uen datagrid associé à ma dataset où j'affiche mes données de table employé

    je veux entammer uen modification des données directement à partir de ma datagrid
    j'ai essayé pleiiiiiiiiiiiiin de codes mais en vain

    Le dernier essai est là :


    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
    if (e.Item.Key.Equals("Modifier") && (e.Item.Group.Key.Equals("Group1")))
                {
    // garanti de sélection d'une ligne 
     if (this.gridEXEmp.CurrentRow.Selected == true)
    {
     //this.gridEXEmp.CurrentRow.BeginEdit();               
     DialogResult réponse = MessageBox.Show("Voulez vous vraiment Modifier cet Employé?!", "Modification", MessageBoxButtons.YesNo);
     
                    if (réponse == DialogResult.Yes)
                    {
                        try
                        {
     
     String chcnx = "UPDATE Employé SET  
    Matricule = gridEXEmp.CurrentRow.Cells[0].Value  , 
    Nom = gridEXEmp.CurrentRow.Cells[1].Value, 
    Prenom = gridEXEmp.CurrentRow.Cells[2].Value ,
    Tel = gridEXEmp.CurrentRow.Cells[3].Value,
    Email = gridEXEmp.CurrentRow.Cells[4].Value" ;
     
                                usrconnection uc = new usrconnection();
                                SqlConnection cnx = usrconnection.Connexion();
                                SqlCommand cmd = new SqlCommand(chcnx, cnx);
                                cmd.ExecuteNonQuery();
                                MessageBox.Show("Employé Supprimé");
                                usrconnection.clscnx(cnx);
                            }
     else { 
    MessageBox.Show("Vous devez séléctionnez l'employé à modifier ", "STOP"); 
    }
     }
     catch (Exception ex)
        {
            MessageBox.Show("Modification impossible" + ex);                  
       }
      }
     }

    Bien sur rien n'est modifié ! Une aideeeeeeeee svp ! ca fait 4 jours maintenant Mon pfe est en danger !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    "UPDATE Employé SET  
    Matricule = gridEXEmp.CurrentRow.Cells[0].Value  , 
    Nom = gridEXEmp.CurrentRow.Cells[1].Value, 
    Prenom = gridEXEmp.CurrentRow.Cells[2].Value ,
    Tel = gridEXEmp.CurrentRow.Cells[3].Value,
    Email = gridEXEmp.CurrentRow.Cells[4].Value"
    Problème de requête, actuellement tu envoie a ta base de données exactement cette requete.
    Ce que tu cherches est surement envoyer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    " UPDATE Employé SET  
    Matricule = '5AS'  , 
    Nom = 'Louis', 
    Prenom = 'Emile',
    Tel = '0102030405',
    Email = 'allezmonaco@asmfc.mc' "
    Donc tu dois soit faire une requete paramétrée (je ne sais plus la syntaxe donc je te laisse chercher), soit une requete de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    "UPDATE Employé SET  
    Matricule = '" & gridEXEmp.CurrentRow.Cells[0].Value & "'  , 
    Nom = '" & gridEXEmp.CurrentRow.Cells[1].Value & "', 
    Prenom '" & = gridEXEmp.CurrentRow.Cells[2].Value & "' ,
    Tel =  '" & gridEXEmp.CurrentRow.Cells[3].Value & "',
    Email = '" & gridEXEmp.CurrentRow.Cells[4].Value & "'"
    De plus tu n'as pas spécifié de WHERE dans ta requête, donc tous les employés seront modifiés.

    Enfin tu as dû faire un copier coller car tu as un messagebox "Employé supprimé" et non "Employé modifié"

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Un très grand merci pour votre passage et votre réponse

    Bon j'ai déjà commencé à corriger mes fautes :
    1) Pour la clause where je l'ai enlevé en croyant que déjà c'est pas nécessaire puisque je vais modifier dans la ligne sélectionnée à partir de ma grille !
    Mais j'ai découvert que ca marche pas ,et que je dois citer la clause à la base pour que les modifs soient prises en compte !

    2) Pour le messagebox oui c'est copié collé à partir de ma fonction précédente de mon projet donc juste une maladresse pas plus

    La nouvelle requête que j'ai fait est paramétrée mais toujours la même erreur qui se génère si tu peux m'aider encore , je serais vraiment remerciante ! Voilà mon code de requête :

    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
     
    if (e.Item.Key.Equals("Modifier") && (e.Item.Group.Key.Equals("Group1")))
                {
     
                    if (this.gridEXEmp.SelectedItems.Count == 0)
                    {
                        MessageBox.Show("Vous devez sélectionner une ligne où modifier", "STOP");
                    }
                    else
                    {
                        //this.gridEXEmp.CurrentRow.BeginEdit();
                        DialogResult réponse = MessageBox.Show("Voulez vous vraiment Modifier cet Employé?!", "Modification", MessageBoxButtons.YesNo);
                        if (réponse == DialogResult.Yes)
                        {
                            try
                            {
     
     
     
                                SqlParameter paramnom = new SqlParameter("@Nom", SqlDbType.VarChar, 50);
                                paramnom.Value = gridEXEmp.GetRow().Cells[1].Text;
     
                                SqlParameter paramprenom = new SqlParameter("@Prenom", SqlDbType.VarChar, 50);
                                paramprenom.Value = gridEXEmp.GetRow().Cells[2].Text;
     
                                SqlParameter paramtel = new SqlParameter("@Tel", SqlDbType.BigInt , 10);
                                paramtel.Value = gridEXEmp.GetRow().Cells[3].Value;
                                SqlParameter paramemail = new SqlParameter("@Email", SqlDbType.VarChar, 80);
                                paramemail.Value = gridEXEmp.GetRow().Cells[4].Text;
     
     
     
                                String chcnx = string.Format("UPDATE Employé SET  Nom =@Nom , Prenom = @Prenom , Tel = @Tel , Email = @Email where Matricule = this.gridEXEmp.GetRow().Cells[0].Text",
                                /*parammat.ParameterName,*/ paramnom.ParameterName,
                                paramprenom.ParameterName, paramtel.ParameterName, paramemail.ParameterName);
                                usrconnection uc = new usrconnection();
                                SqlConnection cnx = usrconnection.Connexion();
                                SqlCommand cmd = new SqlCommand(chcnx.ToString(), cnx);
                                //cmd.Parameters.Add(parammat);
                                cmd.Parameters.Add(paramnom);
                                cmd.Parameters.Add(paramprenom);
                                cmd.Parameters.Add(paramtel);
                                cmd.Parameters.Add(paramemail);
                                cmd.ExecuteNonQuery();
                                MessageBox.Show("Employé Modifié");
                                this.gridEXEmp.Hide();
                                GridEmp frmT = new GridEmp();
                                frmT.ShowDialog();
                                usrconnection.clscnx(cnx);
                            }
     
                            catch (SqlException ex)
                            { MessageBox.Show("Modification impossible" + ex); }
                        }
                    }
                }

    Je sais que c'est peu être débiles mes fautes mais vraiment je suis très débutante en C# et je veux bien apprendre !

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Tu as oublié de remplacer ça par un paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where Matricule = this.gridEXEmp.GetRow().Cells[0].Text"
    De plus laisse nous connaitre l'erreur que tu rencontres ça sera plus facile de t'aider.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    après le paramétrage de matricule voilà l'erreur qui se génère

    pourtant j'ai bien fourni tous les paramètres , mais je vois pas où est la maladresse !

    Merci pour votre patience et gentillesse !
    Images attachées Images attachées  

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Apparemment c'est Telephone qui manque
    Essaye un point d'arrêt ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.Parameters.Add(paramtel);
    Et regarde la valeur de paramtel

  7. #7
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    La valeur de mon paramètre tel existe dans la base mais dan la grille je ne sais pourquoi parmis tous les champs , elle est la seule qui ne s'affiche pas ?

    le point d'arrêt sur tel m'indique que la valeur est null pourtant je l'ai modifié , tous les autres valeurs modifiés avant le champ tel sont tenues en compte !

    Solution ? Merci d'avance !


  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    paramtel.Value = gridEXEmp.GetRow().Cells[3].Value;
    Vu les autres initialisations, ne serait pas plutôt ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    paramtel.Value = Int32.Parse(gridEXEmp.GetRow().Cells[3].Text);

  9. #9
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    paramtel.Value = gridEXEmp.GetRow().Cells[3].Value ;


    est la solutionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn



    cette rose est pour votre gentillesse et patience ! Chapeau bas

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Si je ne m'abuse, ce n'est pas ce que tu avais déjà avant ?

  11. #11
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    oui je m'explique , la syntaxe de la valeur de paramètre est correcte sauf que mon datamember Tel etait null dans ma base et c'etait là la connerie !

  12. #12
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut

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

Discussions similaires

  1. [JTable] Interdire la modification des données ?
    Par Cyborg289 dans le forum Composants
    Réponses: 7
    Dernier message: 25/02/2013, 10h40
  2. [MySQL] Modification des données d'une base par les membres
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/03/2006, 17h25
  3. Réponses: 2
    Dernier message: 21/03/2006, 15h22
  4. Modification des données impossible
    Par Virgile59 dans le forum Access
    Réponses: 8
    Dernier message: 03/03/2006, 14h41
  5. Réponses: 6
    Dernier message: 15/02/2006, 14h02

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