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 :

modifier un dataset a partir d'un autre dataset


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut modifier un dataset a partir d'un autre dataset
    Bonjour,
    je fais du databinding donc j'ai transmis un dataset à ma couche visuel. ce dataset est modifier et je voudrai que mon dataadpter puisse comparer le dataset qui se trouve dans ma couche data avec le dataset qui provient de ma couche visuel.
    donc j'aurai voulu que le dataset 1(data) puis être remplacer par le dataset 2(visuel)

    je suis pas claire peut-être que ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Ds=Dstransmi;
     
                this.MyAdapter.Update(Ds.Tables["clients"]);
    Mais ça ne fonctionne pas?

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    Ds=Dstransmi;
    en faisant ça tu travailles avec le même DataSet, et non pas deux, car tu récupère la référence du DataSet seulement, et puis je ne pense pas qu'on pourrait t'aider si tu nous montres pas comment tu fais. comment tu récupère les données, comment tu bind...etc.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    bonjour et merci de votre aide,
    voici le code se trouvant dans ma couche data, vous verrez que j'essaye avec un merge mais ca semble ne pas fonctionner:


    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
            public int UpDateClient(DataSet Ds)
           {
        // met à jours la client correspondante a l'id (idcl) fourni ce sont les element de l'objet client qui seront introduis
                this.verifConnectionClose();
                DataSet TheTable = new DataSet();
                // remplir dataset avec la table
     
                string MySQLCmd = "select * from clients ;"; //where idClient = " + idcl + " ;";
     
     
                this.MyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, this.Connection);
     
                this.Connection.ConnectionString = this.ConnectionStr;
                this.OpenConnect();
                this.MyAdapter.SelectCommand = this.Connection.CreateCommand();
                this.MyAdapter.SelectCommand.CommandText = MySQLCmd;
               this. MyAdapter.Fill(TheTable, "clients");
     
     
     
               TheTable.Merge(Ds);
     
     
                //effectuer l'update
                string Upcmd = "UPDATE  clients SET nomClient = @nomClient, contact_nameClient = @contact_nameClient, contact_firstnameClient = @contact_firstnameClient, contact_civilityClient = @contact_civilityClient, mobileClient = @mobileClient, faxClient = @faxClient , mailClient = @mailClient , addressClient = @addressClient , cpClient = @cpClient ,villeClient = @villeClient ,tvaClient = @tvaClient , ibanClient = @ibanClient WHERE idClient = @idclient";
     
     
     
                this.MyAdapter.UpdateCommand = new MySqlCommand(Upcmd, this.Connection);
                this.MyAdapter.UpdateCommand.CommandText = Upcmd;
     
                DbParameter paranomclient = this.MyAdapter.UpdateCommand.CreateParameter();
                paranomclient.SourceColumn = "nomClient";
                paranomclient.ParameterName = "@nomclient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paranomclient);
     
     
     
                DbParameter paranomidClient = this.MyAdapter.UpdateCommand.CreateParameter();
                //paranomidClient.Value = TheTable.Tables["clients"].Rows[0]["idClient"];
                paranomidClient.SourceColumn = "idClient";
                paranomidClient.ParameterName = "@idclient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paranomidClient);
     
     
     
     
     
                DbParameter paracontact_nameClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paracontact_nameClient.SourceColumn = "contact_nameClient";
                paracontact_nameClient.ParameterName = "@contact_nameClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paracontact_nameClient);
     
     
                DbParameter paracontactfirstnameClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paracontactfirstnameClient.SourceColumn = "contact_firstnameClient";
                paracontactfirstnameClient.ParameterName = "@contact_firstnameClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paracontactfirstnameClient);
     
     
     
                DbParameter parcntcivClt = this.MyAdapter.UpdateCommand.CreateParameter();
                parcntcivClt.SourceColumn = "contact_civilityClient";
                parcntcivClt.ParameterName = "@contact_civilityClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(parcntcivClt);
     
     
     
     
     
                DbParameter paramobileClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paramobileClient.SourceColumn = "mobileClient";
                paramobileClient.ParameterName = "@mobileClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paramobileClient);
     
     
     
                DbParameter parafaxClient = this.MyAdapter.UpdateCommand.CreateParameter();
                parafaxClient.SourceColumn = "faxClient";
                parafaxClient.ParameterName = "@faxClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(parafaxClient);
     
     
                DbParameter paramailClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paramailClient.SourceColumn = "mailClient";
                paramailClient.ParameterName = "@mailClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paramailClient);
     
     
     
                DbParameter paraaddressClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paraaddressClient.SourceColumn = "addressClient";
                paraaddressClient.ParameterName = "@addressClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paraaddressClient);
     
     
                DbParameter paracpClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paracpClient.SourceColumn = "cpClient";
                paracpClient.ParameterName = "@cpClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paracpClient);
     
     
     
                DbParameter paravilleClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paravilleClient.SourceColumn = "villeClient";
                paravilleClient.ParameterName = "@villeClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paravilleClient);
     
     
                DbParameter paratvaClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paratvaClient.SourceColumn = "tvaClient";
                paratvaClient.ParameterName = "@tvaClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paratvaClient);
     
     
     
                DbParameter paraibanClient = this.MyAdapter.UpdateCommand.CreateParameter();
                paraibanClient.SourceColumn = "ibanClient";
                paraibanClient.ParameterName = "@ibanClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paraibanClient);
     
     
                int p = this.MyAdapter.Update(TheTable, "clients");
     
                return p;
     
     
     
          }

    lorsque je verifie les contenue de la table client s apres le merge la table semble bien modifiée donc pourquoi update ne fonctionne pas?


    merci

  4. #4
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    ça me semble correcte. essaie de voir si tu as des lignes modifiés avant que tu execute l'UPDATE,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataTable changes = TheTable.Tables["clients"].GetChanges(DataRowState.Modified);

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    lorsque je visualise le contenu du dataset "Thetable"(avec visualstudio), je remarque que mes changements y apparaissent bien, mais j'ai l'impression que les lignes ont été ajoutées et non pas modifiées.

    j'ai donc essayé de faire un clear sur la table du dataset avant le merge . Alors effectivement à ce moment la visualisation me montre que le dataset "Thetable" contiend bien que les enregistrements du dataset Ds, mais l'update ne fonctionne pas.

    Si vous avez une autre idée?


    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    Au fait, j'ai bien mis ton bout de code, mais la valeur de "changes" est null.


  7. #7
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    bah non si tu fais un clear, et tu fias un merge après les Rows auront le RowState Insered, donc la requête UPDATE ne marche pas,

    tu as essayé la ligne que je t'ai passé juste avant l'exécution de la requête UPDATE? pour savoir si tu as des ligne qui ont le RowState Modified dans ton DataSet TheTable.

    et tu as une clé primaire dans ta DataTable client? car sans clé primaire le merge ne parche pas.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/01/2012, 15h32
  2. extraire un dataset à partir d'un autre dataset
    Par sidisadmir dans le forum ADO.NET
    Réponses: 1
    Dernier message: 14/09/2011, 18h40
  3. [Toutes versions] Liste modifiable - Exécuter le code à partir d'un autre contrôle
    Par forges dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/08/2011, 10h20
  4. Réponses: 5
    Dernier message: 04/01/2007, 16h46
  5. Modifier la source d'un Iframe à partir d'une autre fenêtre
    Par Dan_Rich dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/10/2005, 08h11

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