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 :

Comment obtenir un Dataset qui est l'union de 2 autres ?


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut Comment obtenir un Dataset qui est l'union de 2 autres ?
    Bonjour,

    Je pars de 2 fichiers XML dont les enregistrements se complètent. Je souhaite obtenir le résultat dans un Dataset.

    J'ai d'abord essayé la méthode .Merge mais celle-ci remplace les enregistrements qui ont la même clé (clé générée lors du chargement des données dans le dataset à partir de chaque fichier XML).

    J'ai ensuite essayé une simple union de DataTables. Le problème est que les clés sont alors dupliquées.

    Quelle est la meilleure solution pour obtenir un DataSet cohérent qui est bien le résultat de l'union de ces 2 fichiers XML ?

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Par défaut Pas clair
    Bonjour ..
    ton problème est pas assez clair à mon sens ...
    1. pourquoi veux tu violer la contrainte de la clé primaire ? ( si le merge fait le remplacement c'est à cause que c'est ce qui doit être fait)
    2. es tu sur que la clé primaire est bien cohérente (pourquoi avoir plusieurs enregistrements avec la même identification d'unicité ?)
    3. Si le problème (comme je comprends) vient du fait que la clé doit être non unique, tu n'as qu'à changer la PrimaryKey de ta table .... et prévoir une gestion de cela ...

    Plus d'informations stp si tu veux une réponse qui peut aider ...
    bon courage

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut
    Mon problème était justement de modifier cette clé primaire, mais je ne voulais pas le faire manuellement car gros risque d'erreur sur les clés étrangères et code moins réutilisable.

    J'ai finalement concaténé mes 2 fichiers XML en 1 avant de charger ce dernier dans le dataset. Ca fonctionne bien, mais ce n'est pas totalement générique: il faut préciser le noeud à partir duquel la fusion doit se faire.

    Concrètement, à partir d'un même noeud de deux fichiers XML différents, j'insère les noeuds enfants du second fichier dans celui du premier.

    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 static System.Xml.XmlDocument MergeXML(XmlDocument baseDoc, XmlDocument docToMerge, string parentNodeToMerge)
            {
                /*
                 * Adapté de la source:
                 * http://www.eggheadcafe.com/community/aspnet/2/10001574/remerge-xml-files.aspx
                 * */
     
                // Exception si non trouvé
                XmlNode container = baseDoc.GetElementsByTagName(parentNodeToMerge)[0];
     
                // Exception si non trouvé
                XmlNode imported = docToMerge.GetElementsByTagName(parentNodeToMerge)[0];
                container.InnerXml += imported.InnerXml;
     
     
                return baseDoc;
            }

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

Discussions similaires

  1. [VB.NET] Comment supprimer un fichier qui est utilisé ?
    Par Toon94 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/06/2010, 13h59
  2. [RegEx] Comment récupérer un texte qui est entre deux balises ?
    Par sandddy dans le forum Langage
    Réponses: 2
    Dernier message: 29/11/2007, 19h27
  3. Réponses: 8
    Dernier message: 19/07/2007, 17h40
  4. SDL: comment rendre l'image qui est déjà en mémoire?
    Par morning_wind dans le forum SDL
    Réponses: 4
    Dernier message: 16/01/2007, 09h32
  5. Réponses: 1
    Dernier message: 28/08/2006, 16h42

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