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 :

dataGridView, dataset et bdd en c#


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut dataGridView, dataset et bdd en c#
    Salut à tous
    S'il vous plait, je cherche de l'aide concernant le dataGridView et le dataset.
    J'ai inséré un dataGridView dans lequel j'ai récupéré les informations de ma table.
    Mon probleme est de supprimer un enregistrement en cliquant sur un bouton sup par exemple.
    J'ai pu supprimer l'élément de la liste de la dataGridView avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    articleBindingSource.RemoveCurrent();
    Je voudrais savoir comment supprimer l'enregistrement du dataset et de ma base ?

    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Si tu utilises un tableAdapter il suffit d'utiliser la méthode update().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    articleBindingSource.RemoveCurrent();
    monTableAdpater.Update();
    Bonne continuation.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par hotsizzle Voir le message
    Si tu utilises un tableAdapter il suffit d'utiliser la méthode update().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    articleBindingSource.RemoveCurrent();
    monTableAdpater.Update();
    Bonne continuation.
    Merci mais l'enregistrement serra suprimer seulement de la dataset comment je peut supprimer le meme enregistrement de ma base de donnée et merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    si tu utilises le générateur de dataSet de visual studio pour créer tes tableAdapters, il suffit lorsque tu crée ton tableAdapter de te rendre dans Options avancé et de bien cocher Générer les instruction Update et Delete et cela fonctionne.

    Si par contre tu utilises un sqlDataAdapter il faut avant tout lui donné UpdateCommand et DeleteCommand pour qu'il puisse faire les mise à jour.

    Bonne continuation.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par hotsizzle Voir le message
    si tu utilises le générateur de dataSet de visual studio pour créer tes tableAdapters, il suffit lorsque tu crée ton tableAdapter de te rendre dans Options avancé et de bien cocher Générer les instruction Update et Delete et cela fonctionne.

    Si par contre tu utilises un sqlDataAdapter il faut avant tout lui donné UpdateCommand et DeleteCommand pour qu'il puisse faire les mise à jour.

    Bonne continuation.
    merci mon ami une autre fois mais j'ai les cocher déja mais la suppression affecte seulement le dataset et pas la bd voila un imprime écran et mon code svp aide moi a résoudre ce problème:


    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
    private void button1_Click(object sender, EventArgs e)
                  {
     
                          try
                          {
     
                             if (MessageBox.Show("Voulez vous confirmer la supression?", "Attention", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                 {
                                  articleBindingSource.RemoveCurrent();
                                 articleTableAdapter.Update(testDataSet);
                                 //testDataSet.Clear();
                                 }
                          }
                          catch (Exception)
                          {
     
                          }
    }
    Remarque: j'ai utilisé l'assistant pour le dataupdater et le dataset
    merci de m'aider

  6. #6
    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
    Est-ce que articleTableAdapter.UpdateCommand contient bien une commande SQL "UPDATE ..." ?

    Bien que cela ne resoudra ton problème, n'oublie pas l'instruction MaTable.AcceptChanges() après articleTableAdapter.Update(testDataSet).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Est-ce que articleTableAdapter.UpdateCommand contient bien une commande SQL "UPDATE ..." ?

    Bien que cela ne resoudra ton problème, n'oublie pas l'instruction MaTable.AcceptChanges() après articleTableAdapter.Update(testDataSet).
    nn il contient seulement une requête select pour sélectionner les champs a remplir dans le datagridviewer.svp je veut une explication détailler parce que je débute avec c# et j'ai chercher partout et merci pour votre aide.bn

  8. #8
    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
    Utimlise le CommmandBuilder pour initialiser le DataAdapter.
    Pour MsAccess (OleDbAdapter) le code serait:
    ArticleTableAdapter = new OleDbDataAdapter(sql, connection);
    oledbCmdBuilder = new OleDbCommandBuilder(oledbAdapter);
    oledbAdapter.Fill(ds);
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Utimlise le CommmandBuilder pour initialiser le DataAdapter.
    Pour MsAccess (OleDbAdapter) le code serait:
    un peut d'explication svp je trouve de difficulté a comprendre et merci.bn

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Regarde dans les propriétés de ton table adapter, il faut que DeleteCommand et UpdateCommand soit bien définies.



    Normalement ca devrait marcher si DeleteCommand et UpdateCommand sont bien définies.

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par hotsizzle Voir le message
    Regarde dans les propriétés de ton table adapter, il faut que DeleteCommand et UpdateCommand soit bien définies.



    Normalement ca devrait marcher si DeleteCommand et UpdateCommand sont bien définies.
    Merci mon ami mais ca marche pas encore voila mes deux requette delete et update est ce quelle sont juste??
    DELETE FROM Article WHERE (Id = @p1) AND (Nom = @p2)
    et
    UPDATE Article SET Id = @p1, Nom = @p2, prix = @p3, stockactuel =@p4, stockmimum = @p5 WHERE (Id = @p1) AND (Nom = @p2)

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Pour la clause where l'ID suffit (si ton Id est bien un id unique) , mais il me semble que les paramètres à passer doivent porter le même nom que ton champs dans la DataTable de ton dataSet donc :

    DELETE FROM Article WHERE (Id = @Id)
    et
    UPDATE Article SET Id = @Id, Nom = @Nom, prix = @prix, stockactuel =@stockactuel , stockmimum = @stockmimum WHERE (Id = @Id)

    Si tes champs se nomme bien :
    - Id
    - Nom
    - prix
    - stockactuel
    - stockmimum

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par hotsizzle Voir le message
    Pour la clause where l'ID suffit (si ton Id est bien un id unique) , mais il me semble que les paramètres à passer doivent porter le même nom que ton champs dans la DataTable de ton dataSet donc :

    DELETE FROM Article WHERE (Id = @Id)
    et
    UPDATE Article SET Id = @Id, Nom = @Nom, prix = @prix, stockactuel =@stockactuel , stockmimum = @stockmimum WHERE (Id = @Id)

    Si tes champs se nomme bien :
    - Id
    - Nom
    - prix
    - stockactuel
    - stockmimum
    Merci bien mon ami pour votre aide et désolé pour le dérangement
    Mais mon problème n'est pas résolu. J'ai essayé mille fois, j'ai testé et vérifié tout mais ca marche pas. Voila mon code, mon data set, ma base et les requête.
    DataSet:

    Base:
    les requêtes:

    et enfin 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace premiere_esai_pfe
    {
        public partial class Gestion_Article : Form
        {
            public Gestion_Article()
            {
                InitializeComponent();
            }
     
            private void Gestion_Article_Load(object sender, EventArgs e)
            {
                // TODO: This line of code loads data into the 'testDataSet.Article' table. You can move, or remove it, as needed.
                this.articleTableAdapter.Fill(this.testDataSet.Article);
     
            }
            private void supp_Click(object sender, EventArgs e)
            {
                try
                {
                    if (MessageBox.Show("Voulez vous confirmer la supression ?", "Attention", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        articleBindingSource.RemoveCurrent();
                        articleTableAdapter.Update(testDataSet);
                        testDataSet.AcceptChanges();
                    }
                }
                catch (Exception)
                {
                    //dt_Article.RejectChanges();
                }
            }
     
     
        }
    }
    Est ce qu'il manque une chose ou il existe une faute quelque part ?
    Merci de m'aider

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Je vois que dans ta requete Delete il n'y a pas d'espace entre Article et Where , puis dans l'update même chose entre article et Set ....
    Je ne sais pas si c'est la source du problème mais sinon je ne vois pas d'autre problèmes

    Comme demande grafito passes - tu dans l'exception ?

  15. #15
    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
    Passe-t'on par le catch Exception ?
    Dans ce cas, quel est le message de kl'exception ?
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Bonjour a tous, j'ai juste une petite question. As tu vérifié que les donneés soient bien supprimé ou mis a jour dans la bonne base de données car tu utilises, il me semble, une base de données locales (fichier .sdf => SQL Server CE) qui est recopiée a chaque compilation dans le repertoire bin\Debug ou bin\Release. Ce qui signifie que lors de tes essais en mode debug ou release, tu ajoutes, modifies ou supprime des données dans une base de données qui n'est pas celle que tu vois dans ton projet.

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par hotsizzle Voir le message
    Je vois que dans ta requete Delete il n'y a pas d'espace entre Article et Where , puis dans l'update même chose entre article et Set ....
    Je ne sais pas si c'est la source du problème mais sinon je ne vois pas d'autre problèmes

    Comme demande grafito passes - tu dans l'exception ?
    on aurra une suppression de la datagridviewer et de la dataset mais pas de ma base je pensse qu'on passe par l'exception dans le cas ou le data gridviewer et vide.de l'aide j'ai besoin de resoudre ce probleme pour mon pfe et merci pour votre aide.

  18. #18
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    L'erreur est normal si ton datagrid est vide car BindingSource.Current est null du coup il peut pas supprimer vu qu'il n'y a rien.
    Sinon pour le problème de l'update je suis à court d'idée ...

  19. #19
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ddaime Voir le message
    Bonjour a tous, j'ai juste une petite question. As tu vérifié que les donneés soient bien supprimé ou mis a jour dans la bonne base de données car tu utilises, il me semble, une base de données locales (fichier .sdf => SQL Server CE) qui est recopiée a chaque compilation dans le repertoire bin\Debug ou bin\Release. Ce qui signifie que lors de tes essais en mode debug ou release, tu ajoutes, modifies ou supprime des données dans une base de données qui n'est pas celle que tu vois dans ton projet.
    j'ai tester même avec un fichier .mdf c'est le même problème je pense pas que c'est la source du problème et merci mon ami la suppression ce fait seulement de la datagridviewer et du dataset et pas de la base

  20. #20
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par hotsizzle Voir le message
    L'erreur est normal si ton datagrid est vide car BindingSource.Current est null du coup il peut pas supprimer vu qu'il n'y a rien.
    Sinon pour le problème de l'update je suis à court d'idée ...
    ou on évite l'erreur pas l'exception on peut afficher un simple messageBox mais le problème et la suppression de l'enregistrement sélectionner de la source de donnée(bd)

Discussions similaires

  1. Remplir un DatagridView : Dataset ou manuellement
    Par mafamafa dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/05/2009, 14h47
  2. Réponses: 19
    Dernier message: 26/08/2008, 15h03
  3. [VB.NET 2005] Datasets et Bdd
    Par Bz dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/09/2007, 09h38
  4. Ajouter combobox dans datagridview + dataset
    Par Gdal dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/05/2007, 23h09
  5. [C#] Datagridview, dataset, etc Problème de refresh
    Par nitrous007 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/12/2006, 14h01

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