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 :

[C#] mettre à jour ma bdd à partir d'une datatable


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut [C#] mettre à jour ma bdd à partir d'une datatable
    Bonjour à tous,
    saviez vous comment peut on mettre à jour une bdd access, qui est ouverte à partir d'une application c#

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    j'suis vert !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    merci HULK pour le lien
    j'ai déjà fait les étapes citées, mais sans résultat. la seule différence entre mon code et ces étapes c'est que moi je n'utilise pas un composant OleDbDataAdapter.
    donc mon problème reste toujours tel quel.

  4. #4
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    Par défaut
    bah c'est quoi le probleme alors ?? tu as un message d'erreur ??
    j'suis vert !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    bonjour
    voilà mon problème en détails
    je fais une connexion à une bdd Access, je fais un binding et j'affiche le contenue dans le datagrid.
    la bdd Access contient plusieurs tables, à chaque fois je change seulement la source du datagrid et le contenu de la table souhaitée est affiche. jusque là avec l'import et l'affichage tout marche bien.
    mais quand fais quelques modifications dans le datagrid, je veux (après un événement click sur un bouton par exemple) je veux mettre à jours ma bdd. et c'est ça mon problème cher ami HULK.

  6. #6
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    Par défaut
    donne nous ton code pour afficher les données dans le datagrid et celui pour l'updater
    j'suis vert !

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    // Se connecter à la base de données et s'en sortir les données.
    privatevoid OuvrirBD(string monfichier)
    {
    // Ajouter la table contenant les données initiales au DataSet.
    monDataSet.Tables.Add(mesDonnees);
    // Les paramètres de la connexion.
    string paramAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + monfichier;
    // La requête.
    string requeteAccessSelect = "SELECT * FROM mesDonnees";
    OleDbConnection maConnAccess = null;
    try
    {
    maConnAccess =
    newOleDbConnection(paramAccessConn);
    // Exécuter la commande Select sur la base de données.
    try
    {
    OleDbCommand maCommandeAccess = newOleDbCommand(requeteAccessSelect, maConnAccess);
    // monDataAdaptateur permet de remplir le flux de données
    // dans un DataSet.
    monDataAdaptateur = newOleDbDataAdapter(maCommandeAccess);
    maConnAccess.Open();
    // Ici on remplit les données dans le DataSet
    //monDataAdaptateur.Fill(monDataSet, "mesDonnees");
    monDataAdaptateur.Fill(monDataSet, "mesDonnees");
    }
    catch (Exception ex)
    {
    MessageBox.Show("Erreur: Echec de trouver la table demandée depuis la base de données.\n" + ex.Message, "Erreur");
    return;
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show("Erreur: Echec de créer une connexion à la base de données. \n" + ex.Message);
    return;
    }
    }


    ....
    monDataGridView.Update();
    DataTable tamp = (DataTable) monDataGridView.DataSource;

    monDataAdaptateur.Update(tamp);

    Merci

  8. #8
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    Par défaut
    hé bé c'est pas étonnant qu'il ne prenne pas en compte tes modifications dans ta base !!!!

    Si tu utilise Visual Studio tu devrais passer par le concepteur, quand tu prends un dataadapter, il te genere automatiquement des requetes UPDATE INSERT et DELETE. C'est grace à ca que les modifs dans ton datagrid prendront effet dans ta base access par l'intermediaire de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monDataAdaptateur.Update(tamp);
    est ce que tu utilise visual studio ?
    j'suis vert !

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    oui j'utilise visual studio
    c'est quoi le concepteur? c'est un composant?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    j'utilise VS Express 2005 pour ce projet.
    mais j'ai en parallèle la version 2003 Pro

  11. #11
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    Par défaut
    avec VS 2003, tu glisse un composant oledbdataadapter de la boite à outils à gauche, tu genere ta requete select, il va te faire automatiquement tes INSERT DELETE ET UPDATE.

    tu genere ton dataset, tu applique un datasource (le dataset) et un display member (datatable du dataset) à ton datagrid.

    derriere un bouton load tu fais un fill de ton dataset et derriere un bouton update du fais un update de ton dataset

    reprends ce lien et suit le avec VS 2003, tu va comprendre comment ca fonctionne :

    http://msdn.microsoft.com/library/fr...indowsform.asp
    j'suis vert !

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    oui j'essaye de revenir à ta première proposition (le lien cité).
    j'ai fais pratiquement tout mais oleDbDataAdapter ne me génère pas une instruction UPDATE ni DELETE.
    on peut l'ajouter après la configuration dans l'onglet propriété de oleDbDataAdapter mais je ne sais la structure de ces deux commandes.
    saviez vous comment?

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    je t'explique encore.
    dans votre lien, je suis arrivé au point suivant:
    Mise à jour de la base de données

    j'ai ajouté un bouton et le code suivant
    // C#
    private void btnUpdate_Click(object sender, System.EventArgs e)
    {
    oleDbDataAdapter1.Update(dsAuthors1);
    MessageBox.Show("Database updated!");
    }

    j'exécute mais voila le message d'erreur

    Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.data.dll
    Informations supplémentaires : Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    HULK
    le composant oleDbDataAdapter n'existe pas dans VS Express 2005. y a t il un remplaçant?

  15. #15
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    Par défaut
    y'a pas non plus le sqldataadpapter, je crois que c'est du au fait que VS express est gratuit. Si il ne te fait pas de UPDATE et le DELETE, c'est parce que ton SELECT est pas conforme, ca peut etre du au fait que tu ai un DISTINCT dans ton SELECT ou que tu ne prenne pas la clé primaire de ta table dans ton SELECT.
    j'suis vert !

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    Ok et merci pour toutes les réponses cher ami HULK.

    une petite dernière question si vous voulez, j'ai suivi le lien mais je n'arrive toujours pas à faire le DELETE, pourtant le UPDATE marche bien!

  17. #17
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    Par défaut
    bah normalement c pas à toi de les faire, ca se fait tout seul, si toutes les autres instructions se generent toutes seules, y'a pas de raison que le DELETE foire
    j'suis vert !

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 25
    Points
    25
    Par défaut
    Ok je vais ressayer. Merci pour vous

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

Discussions similaires

  1. [Débutant] Mettre à jour UN BD à partir d'une Datatable
    Par abd75web dans le forum VB.NET
    Réponses: 5
    Dernier message: 07/02/2013, 13h29
  2. [Toutes versions] Mettre à jour un champ à partir d'une variable
    Par familledacp dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/04/2009, 20h43
  3. mettre à jour un xml à partir d'une BD
    Par med_ellouze dans le forum Format d'échange (XML, JSON...)
    Réponses: 24
    Dernier message: 09/08/2007, 21h08
  4. Réponses: 4
    Dernier message: 16/09/2005, 14h49
  5. Réponses: 3
    Dernier message: 09/07/2004, 10h23

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