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 :

MAJ BDD Update TableAdapter


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut MAJ BDD Update TableAdapter
    Bonjour,

    J'essaye de mettre à jour mon BDD mais je n'y arrive pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (MessageBox.Show("Voulez-vous Sauvegarder les données ?", "Sauvegarde", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        sOCIETETableAdapter.Update(dsSociete.SOCIETE);
                        //.RefreshData();
                        MessageBox.Show("Les données ont été enregistrées dans la base");
                    }
    Sachant qu'auparavant j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    this.tYPE_SOCIETETableAdapter.Fill(this.dsSociete.TYPE_SOCIETE);
                this.sECTEUR_ACTIVITETableAdapter.Fill(this.dsSociete.SECTEUR_ACTIVITE);
     
                if (_codeSociete != -1)
                    sOCIETETableAdapter.FillBySociete(dsSociete.SOCIETE, _codeSociete);
                else
                {
                    REVE_Rep.DsSociete.SOCIETERow row = dsSociete.SOCIETE.NewSOCIETERow();
                    REVE_Rep.DsSocieteTableAdapters.QueriesTableAdapter query = new REVE_Rep.DsSocieteTableAdapters.QueriesTableAdapter();
                    _codeSociete = (int)query.GetNewCodeSociete();
                    row.Code_societe = _codeSociete;
                    dsSociete.SOCIETE.AddSOCIETERow(row);
    Les modifications ne sont pas prises en compte.

    Le plus troublant, c'est que si je met un point d'arret à ce moment la : sOCIETETableAdapter.Update(dsSociete.SOCIETE);, je vois que la dataTable Societe a bien été modifiée.

    Merci d'avance.

  2. #2
    Expert confirmé 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
    Par défaut
    Vérifie sOCIETETableAdapter.UpdateCommand.Text qui devrait contenir la commande SQL "INSERT ...".

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu utilises quoi comme BDD ?
    Si c'est une BDD fichier (par exemple Access, SQL Server compact...), vérifie les propriétés du fichier dans ton projet, et vérifie que l'option "Copier dans le répertoire de sortie" n'est pas "toujours copier". Avec cette option, le fichier dans le répertoire de travail est écrasé à chaque compilation... donc tes modifs sont perdues

    Citation Envoyé par Graffito Voir le message
    Vérifie sOCIETETableAdapter.UpdateCommand.Text qui devrait contenir la commande SQL "INSERT ...".
    euh... t'es sûr ?
    Et la InsertCommand, elle contient une commande DELETE alors ?

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    J'utilise SQL Server Entreprise Manager.

    J'ai vérifié UpdateCommand qui est bien implénentée.

    Pour les propriétés du projet, je n'ai pas trouvé ou cela se situait.

    Je n'ai toujours pas la solution....

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par tmerigon Voir le message
    Pour les propriétés du projet, je n'ai pas trouvé ou cela se situait.
    Je parle pas des propriétés du projet, mais des propriétés du fichier de base de données dans le projet. Dans l'explorateur de solution, tu sélectionnes le fichier .mdf, clic droit, propriétés

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    Je n'ai pas de fichier .mdf dans mon projet...

  7. #7
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    En revanche j'ai un fichier .xsd qui a la propriété "Copier dans le répertoire de sortie" est la valeur est "Ne pas copier", la propriété "Action de génération" est a "Aucun".

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par tmerigon Voir le message
    Je n'ai pas de fichier .mdf dans mon projet...
    OK, donc c'est pas ça le problème...

    On va essayer de voir ce qui se passe lors de la mise à jour. Ajoute un handler pour l'évènement RowUpdating du SqlAdapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            sOCIETETableAdapter.Adapter.RowUpdating += Adapter_RowUpdating;
     
            ...
     
            static void Adapter_RowUpdating(object sender, SqlRowUpdatingEventArgs e)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(e.Command.CommandText);
                foreach(var prm in e.Command.Parameters)
                    sb.AppendLine(string.Format("{0} = {1}", prm.ParameterName, prm.Value));
            }

    Ca devrait déjà permettre de voir s'il exécute quelque chose, quelle commande exacte il exécute, et quelles sont les valeurs des paramètres

    Citation Envoyé par tmerigon Voir le message
    En revanche j'ai un fichier .xsd qui a la propriété "Copier dans le répertoire de sortie" est la valeur est "Ne pas copier", la propriété "Action de génération" est a "Aucun".
    Rien à voir a priori, ça doit être ton dataset

  9. #9
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    Erreur: 'object' ne contient pas une définition pour 'ParameterName' et aucune méthode d'extension 'ParameterName' acceptant un premier argument de type 'object' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante*?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sb.AppendLine(string.Format("{0} = {1}", prm.ParameterName, prm.Value));
    De meme pour prm.value

    Merci

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    arf... ils sont ch****s à faire des IEnumerable non typés

    comme ça, ça devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach(SqlParameter prm in e.Command.Parameters)

  11. #11
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    Ca marche comme ça mais rien ne se passe, que suis-je censé voir??

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par tmerigon Voir le message
    Ca marche comme ça mais rien ne se passe, que suis-je censé voir??
    Ah pardon, j'ai oublié un petit détail...
    Rajoute ça à la fin de la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show(sb.ToString());

  13. #13
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    Oui toujours rien, j'avais mis un point d'arret qui m'a fait voir que le programme n'entrait meme pas dans la méthode..

    Voila, au cas ou, à quel moment j'appel la méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void simpleButton1_Click(object sender, EventArgs e)
            {
                try
                {
                    if (MessageBox.Show("Voulez-vous Sauvegarder les données ?", "Sauvegarde", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        sOCIETETableAdapter.Update(dsSociete.SOCIETE);
                        sOCIETETableAdapter.Adapter.RowUpdating += Adapter_RowUpdating;
                        MessageBox.Show("Les données ont été enregistrées dans la base");
                    }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }
    Merci beaucoup

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK, donc le TableAdapter considère qu'il n'y a aucune ligne à mettre à jour, et il ne fait rien...

    Comment modifies-tu le contenu de la DataTable ? en code ? via un DataGridView ?

  15. #15
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    via le DataGridView

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK, alors essaie la chose suivante : modifie la valeur dans le DataGridView, clique sur une autre ligne du DataGridView, puis clique sur ton bouton d'enregistrement. Si c'est bien ce que je crois, ça devrait marcher.

    Si ça marche quand tu fais ça, tu peux ajouter la ligne suivante au début de simpleButton1_Click :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataGridView1.EndEdit();
    Ca devrait forcer la validation de la cellule en cours d'édition, de façon à ce que le TableAdapter prenne bien en compte la modification

  17. #17
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    C'est bon, la solution m'a été donée par un collègue.

    Il faut faire un EndEdit(); sur le BindingSource...

    Merci beaucoup.

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    N'oublie pas le bouton alors
    (en bas de la page)

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

Discussions similaires

  1. TableAdapter : MAJ BDD (utilisation de tbox, lbox)
    Par bluekat dans le forum VB.NET
    Réponses: 3
    Dernier message: 10/03/2011, 16h54
  2. [MySQL] MAJ BDD par un fichier .txt distant
    Par Nalack dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/01/2007, 20h25
  3. Réponses: 1
    Dernier message: 24/10/2006, 13h10
  4. [PHP-JS] Fenêtre invisible (pour MAJ BDD) ?
    Par Lideln dans le forum Langage
    Réponses: 7
    Dernier message: 01/08/2006, 20h05
  5. [ADO.NET] MAJ BDD à partir d'un DataSet d'un DataGrid
    Par bart64 dans le forum Accès aux données
    Réponses: 15
    Dernier message: 20/12/2005, 19h16

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