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 :

Mise à jour bd access via dataGridView ignorée


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Points : 85
    Points
    85
    Par défaut Mise à jour bd access via dataGridView ignorée
    Bonjour,

    Je charge un DataGridView à partir d'une table d'un fichier access .. Cela fonctionne

    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
    public System.Data.OleDb.OleDbConnection Connection;
    
    public System.Data.OleDb.OleDbDataAdapter DataAdapter;
    
    public void OpenBase(){
    // Connection à la base de donnée
    this.Connection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=tfichier.mdb");
    this.Connection.Open();
    }
    
    public void LoadData(){
    // Creation du DataAdapter 
    this.DataAdapter = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM MaTable", this.Connection);
    // On charge les données
    System.Data.DataTable dt = new System.Data.DataTable();
    this.DataAdapter.Fill(dt);
    // On lie le DataGridView à la DataTable
    this.DataGridView1.DataSource = dt;
    }
    Puis, je tente de répercuter les modifications apportées par l'utilisateur dans la base de donnée ... Et cela ne marche pas : Pas d'exception levée, En exécutant en pas à pas on voit que les lignes de code sont bien appelées, mais rien ... Le RowState passe bien de Modified à Unchanged ... c'est tout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void SaveData(){
    // La structure de la base étant hyper simple on passe ar un OleDBCommandBuilder
    System.Data.OleDb.OleDbCommandBuilder cb = new System.Data.OleDb.OleDbCommandBuilder(this.DataAdapter);
    this.DataAdapter.Update((System.Data.DataTable) this.dataGridView1.DataSource);
    }
    Qu'ai-je donc oubliée ???? J'ai essayer de passer par un DataSet au lieu d'un DataTable, cela ne change rien ...

    Merci d'avance ...

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Utilise le même DataAapter que pour le Fill, en initialisant ses propriétés UpdateCommand et DeleteCommand
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Merci pour la réponse...

    J'utilise déjà le même DataAdapter ... Quant au fait de renseigner les propriétés UpdateCommande et InsertCommand, je veux bien, mais je croyais que OleDbCommandBuilder s'en chargeait pour des structures de données aussi simples.

    Si ce n'est pas le cas, je ne vois pas à quoi il sert ...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Points : 85
    Points
    85
    Par défaut
    Là je craque ... C'est quoi ce truc OleDBDataAdapter ?????

    Je crois que je vais finir par abandonner et faire comme d'habitude, attaquer directement la table en passant toutes les commandes SQL appropriées !

    Je viens d'essayer de spécifier manuellement la commande à utiliser :
    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
     
    this.OleDbDataAdapter.InsertCommand = new System.Data.OleDb.OleDbCommand("INSERT INTO MaTable (Numero, Secteur, Ville, Nom, isActif) VALUES (?, ?, ?, ?, ?)");
    this.OleDbDataAdapter.InsertCommand.Connection = this.OleDBConnection;
     
    parametres = new System.Data.OleDb.OleDbParameter();
    parametres.OleDbType = System.Data.OleDb.OleDbType.BigInt;
    parametres.SourceColumn = "Numero";
    this.OleDbDataAdapter.InsertCommand.Parameters.Add(parametres);
     
    parametres = new System.Data.OleDb.OleDbParameter();
    parametres.OleDbType = System.Data.OleDb.OleDbType.VarChar;
    parametres.SourceColumn = "Secteur";
    this.OleDbDataAdapter.InsertCommand.Parameters.Add(parametres);
     
    (....)
    Et bien entendu j'ai supprimé la déclaration de OleDdCommandBuilder

    Et bien croyez le ou pas, J'ajoute une ligne dans le DataGridView et lors de l'appel de la méthode Update sur le dataAdapter, il ne se passe rien ! Pas d'exception, rien du tout !!!

    MAIS Si pour test je rajoute une erreur de syntaxe dans la commande SQL alors là j'ai bien une exception ... Donc il doit bien faire appel à la commande !

    Y a t il donc une transaction implicite qu'il faudrait valider ??? sous peine d'obtenir un Rollback automatique ???

    Je comprend PAS

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Points : 85
    Points
    85
    Par défaut

    J'ai enfin trouvé

    Un problème dans l'emplacement de la base ... Chaque lancement de l'exécutable depuis VS2005 était précédé d'un écrasement du fichier mdb

    Et dire que j'y ai passé un temps fou !

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

Discussions similaires

  1. Mise à jour Tables access via Datagridview
    Par Apocalyptico dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/02/2010, 14h17
  2. Mise à jour BDD SQL via DataGridView
    Par Alexis_W dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/01/2009, 12h37
  3. Mise a jour Base Access via DataSet
    Par papy75 dans le forum Accès aux données
    Réponses: 19
    Dernier message: 26/05/2008, 05h30
  4. Module de Mise à jour BDD access via un site sécurisé
    Par Askarod dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/12/2005, 08h31
  5. Mise à jour base access->mysql impossible... :-(
    Par pako69 dans le forum Administration
    Réponses: 4
    Dernier message: 26/09/2005, 14h51

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