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

Windows Forms Discussion :

Probleme de mise a jour de base à partir d'un DGV


Sujet :

Windows Forms

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut Probleme de mise a jour de base à partir d'un DGV
    Bonjour, je souhaiterai mettre à jour ma base de données à partie de l'edition direct de mon dgv qui est bindé avec un bindingSource.
    Voici le code que je tente d'executer:
    A l'initialisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void Init()
            {
                masterDataGridView.DataSource = masterBindingSource;
                detailsDataGridView.DataSource = detailsBindingSource;
                GetData();
    Ensuite, La fonction qui recupere les données (inspirer d'un ex du web):
    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
     
           private void GetData()
                {
                    try
                    {
                        string connectionString = "provider=Microsoft.JET.OLEDB.4.0;data source =Asso.mdb;";
                        OleDbConnection connection = new OleDbConnection(connectionString);
     
                        data = new DataSet();
     
                         masterDataAdapter = new OleDbDataAdapter("select * from Famille", connection);
                        masterDataAdapter.Fill(data, "Famille");
     
                         detailsDataAdapter = new OleDbDataAdapter("select * from Enfant", connection);
                        detailsDataAdapter.Fill(data, "Enfant");
     
                        DataRelation relation = new DataRelation("FamilleToEnfant",
                        data.Tables["Famille"].Columns["FamilleId"],
                        data.Tables["Enfant"].Columns["FamilleId"]);
                        data.Relations.Add(relation);
     
                        masterBindingSource.DataSource = data;
                        masterBindingSource.DataMember = "Famille";
     
                        detailsBindingSource.DataSource = masterBindingSource;
                        detailsBindingSource.DataMember = "FamilleToEnfant";
                    }
                    catch
                    {
                    }
                }
    L'event qui est censé mettre a jour mon DGV :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void masterDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
             {
                 DataSet dataSetChanged = data.GetChanges(DataRowState.Modified);
                 masterDataAdapter.Update(dataSetChanged, "Famille");
             }
    Et sur la ligne en gras/rouge j'obtiens l'erreur suivante :

    L'exception System.Data.DBConcurrencyException n'a pas été gérée
    Message="Violation de l'accès concurrentiel : UpdateCommand a affecté 0 des enregistrements 1 attendus."
    Source="System.Data"
    RowCount=1
    .....
    Merci de votre aide.
    Si quelqu'un a un exemple de mise a jour de base à partir de l'edition direct d'un DGV je suis preneur
    PS: j'ai bien sur creer la requete update qui va bien, mais pas souci de clarter du message je ne l'ai pas posté. Si quelqu'un souhaite la voire pour plus de detail je la mettrai dans un post separé.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    personne n'a une idéé?
    J'ai fais le test pour mettre a jour ma base de données directement a partir de mon DGV bindé sur un dataTable (apres avoir lu presque tous les posts du forum qui disaient qu'un DGV bindé aun dataTable ca marche...)
    Voici mon code :
    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
     private void GetData3()
                {
                    try
                    {
                        string connectionString = "provider=Microsoft.JET.OLEDB.4.0;data source =Asso.mdb;";
                        OleDbConnection connection = new OleDbConnection(connectionString);
                        string commandString = "select * from Famille";
     
                        OleDbDataAdapter DA = new OleDbDataAdapter(commandString, connection);
                        DataSet ds = new DataSet("test");
                        masterDataAdapter.Fill(ds, "Famille");
                        DataTable dt = ds.Tables["Famille"];
                        masterDataGridView.DataSource = dt;
     
                    }
                    catch
                    {
                        MessageBox.Show("Error in GetData3 function");
                    }
                }
    J'ai bien les infos de ma DB dans mon DGV, mais lorsque je modifie une cellule de mon DGV rien ne se passe.
    Je pense qu'il manque un bout mais je ne sais pas trop ou.... pour dire de mettre a jour (faire appel à la commande d'update) ma DB.
    Merci de vos lumières.
    Tout exemple est le bien venu....

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Tu dois creer une commande update a partir de ton adapter

    Voici en bref un petit exemple

    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
    // Chargement DataSet
     
          MySqlDataAdapter ada = new MySqlDataAdapter();
          string sel = "select * from ritstat where date >=20090101 and date <20090427 order by date";
          ada.SelectCommand = new MySqlCommand(sel, MyConn.conn);
     
          DataSet dsx = new DataSet();
          ada.Fill(dsx);
     
    ////// Exploitation DataTable
     
     
    // Update
          MySqlCommandBuilder cb = new MySqlCommandBuilder(ada);
          DataSet ch = new DataSet();
     
          ch = dsx.GetChanges(DataRowState.Modified);
          if (null != ch)
          {
            int mod = ada.Update(ch);
            dsx.AcceptChanges();
          }

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Citation Envoyé par skunkies Voir le message
    PS: j'ai bien sur creer la requete update qui va bien, mais pas souci de clarter du message je ne l'ai pas posté. Si quelqu'un souhaite la voire pour plus de detail je la mettrai dans un post separé.
    Je l'ai mis dans mon premier post.
    J'ai trouvé un exemple sur le web qui a l'air de marché. Dans le cas ou c'est resolu apres mes tests je tagguerai le post.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/05/2011, 16h29
  2. [MySQL] mysql, probleme de mise a jour d'une base de donnée
    Par lol88 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/01/2010, 17h52
  3. [MySQL] probleme de mise a jour de la base de donnée
    Par Palsajicoco dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/06/2009, 18h49
  4. Réponses: 4
    Dernier message: 27/05/2009, 16h17
  5. Réponses: 3
    Dernier message: 27/01/2009, 20h56

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