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

ASP.NET Discussion :

Erreur: "DataTable already belongs to another DataSet" ?


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Par défaut Erreur: "DataTable already belongs to another DataSet" ?
    lors de l'ajout d'une table à un dataset, j'ai cette erreur.

    en fait, j'ai une méthode qui met ma table dans un dataset pour l'envoyer à une autre méthode.

    Lors du premier appel, ca passe. Mais lorsque j'apelle ma méthode pour la seconde fois il me dit ceci: "DataTable already belongs to another DataSet"

    voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected bool setOvertimeDetails(int employeeID, DateTime month, int InterventionID, DataTable mytable)
        {
            DataSet myds = new DataSet();
     
            myds.Tables.Add(mytable);
            return temp_setovertimes(employeeID, month.Year, month.Month, InterventionID, myds);
            }
    j'ai essayé d'ajout deci dans ma méthode mais ca ne change rien:

    ou
    ou encore

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2005
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 218
    Par défaut
    Il semble que le DataTable mytable soit défini dans un autre Dataset et donc, tu ne peux pas copier le DataTable dans un nouveau DataSet...

    Si tu veux le copier, il faut y aller DataRow par DataRow....avec une méthode un peu lourde, je peux te retrouver ca...

  3. #3
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Par défaut
    Citation Envoyé par GrosseVache Voir le message
    Il semble que le DataTable mytable soit défini dans un autre Dataset et donc, tu ne peux pas copier le DataTable dans un nouveau DataSet...

    Si tu veux le copier, il faut y aller DataRow par DataRow....avec une méthode un peu lourde, je peux te retrouver ca...
    beh il a été défini dans ce même dataset.

    je le crée et je lui assigne la table, donc la 2eme fois qu'on passe dans la boucle, il recrée un dataset pour lui assigner la table qui avait déjà été assignée dans le premier dataset créé lors du premier passage.

    c'est pour cela que je voulais essayer de retirer la table du dataset lors de la fin de boucle, mais cela ne change rien je ne comprends pas pourquoi

  4. #4
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Le problème vient du fait que une fois que tu as associé une table à un Dataset, elle y reste "attachée". De même avec un row à une datatable, etc..

    Ce que tu peux faire, c'est éventuellement utiliser la méthode Copy() d'une datatable qui te retourne une DataTable qui est une Copie (structure et enregistrements) de celle sur laquelle tu appelles la méthode.

    Seulement, tu risques de vite encombrer ta mémoire (même si ce n'est plus toujours d'actualité, ça reste un gage de bonne programmation)...

    Qu'essayes-tu de faire à travers cette méthode, n'y a-t-il pas moyen de faire autrement ?

  5. #5
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Par défaut
    Citation Envoyé par Pongten Voir le message
    Le problème vient du fait que une fois que tu as associé une table à un Dataset, elle y reste "attachée". De même avec un row à une datatable, etc..

    Ce que tu peux faire, c'est éventuellement utiliser la méthode Copy() d'une datatable qui te retourne une DataTable qui est une Copie (structure et enregistrements) de celle sur laquelle tu appelles la méthode.

    Seulement, tu risques de vite encombrer ta mémoire (même si ce n'est plus toujours d'actualité, ça reste un gage de bonne programmation)...

    Qu'essayes-tu de faire à travers cette méthode, n'y a-t-il pas moyen de faire autrement ?
    faire autrement je n'ai ni l'envie ni le temps.

    mais je comrpends pas, il doit bien y avoir moyen de retirer la table d'un dataset?

  6. #6
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Peut-être comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    DataTable _myTable = _monDataSet.Tables["Nom de la table"];
    _monDataSet.Tables.Remove("Nom de la Table");
    Si la Table n'a pas de nom, cela peut également être fait par son index..

  7. #7
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Par défaut
    Citation Envoyé par Pongten Voir le message
    Peut-être comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    DataTable _myTable = _monDataSet.Tables["Nom de la table"];
    _monDataSet.Tables.Remove("Nom de la Table");
    Si la Table n'a pas de nom, cela peut également être fait par son index..
    non il continue à me faire ***** avec la même erreur.

    j'ai essayé plusieurs méthodes, toujours pareil...

  8. #8
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    En fait, je ne comprends pas ce à quoi tu veux arriver.. tu ne sais pas l'expliquer un peu plus ?

  9. #9
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Par défaut
    j'ai une table, qui contient des infos que l'utilisateur édite via un gridview,...

    une fois qu'il a édité ses infos, il peut sauver via un simple bouton sauver.

    j'ai donc une méthode qui met ma table dans un dataset pour l'envoyer à une autre méthode via un webservice.

    Lors du premier appel, ca passe. Mais lorsque j'apelle ma méthode pour la seconde fois (tout simplement si le même utilisateur décide de resauver) il me dit ceci: "DataTable already belongs to another DataSet".

    alors la solution à mon problème serauit de pouvour enlever cette table du dataset après l'appel de la méthode.

    je ne comprends pas qu'on ne puisse pas le faire, ca serait du grand n'importe quoi

  10. #10
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    As-tu essayé un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    protected bool setOvertimeDetails(int employeeID, DateTime month, int InterventionID, DataTable mytable)
        {
            DataSet myds = new DataSet();
           
            myds.Tables.Add(mytable);
            bool answser = temp_setovertimes(employeeID, month.Year, month.Month, InterventionID, myds);
            myds.Tables.Remove(mytable);
            return bool; 
            }

  11. #11
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Par défaut
    ah mer**

    j'étais tellement perturbé par cette histoire de table qui voulait pas sortir de ce dataset que j'en avais oublié le principal. je retournais avant mes commandes, donc forcément il ne retirait jamais.

    ceci fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DataSet myds = new DataSet();
            myds.Tables.Add(mytable);
     
            bool answer= temp_setovertimes(employeeID, month.Year, month.Month, InterventionID, myds);
            myds.Tables.Clear();
            return answer;
    ta proposition a fait

  12. #12
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Content d'avoir pu t'aider

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

Discussions similaires

  1. [Sockets] Erreur 98 "address already in use"
    Par iReNu dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 17/04/2009, 17h27
  2. Réponses: 4
    Dernier message: 23/10/2008, 11h45
  3. Réponses: 2
    Dernier message: 02/03/2007, 02h23
  4. erreur avec datatable
    Par samir dans le forum XMLRAD
    Réponses: 7
    Dernier message: 28/11/2006, 18h09

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