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++Builder Discussion :

Enregistrer une table Access dans un fichier "XML"


Sujet :

C++Builder

  1. #1
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut Enregistrer une table Access dans un fichier "XML"
    Bonjour

    Bonjour,

    Je cherche à enregistrer une table access dans un fichier "XML", et dans un autre programme je cherche à insérer le contenu du fichier "XML" dans une autre table access de même format.

    Ya t'il quelqu'un qui a déjà tenter le coup ?

    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Pour l'enregistrement, j'ai utiliser la methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaTable -> SaveToFile("c:\\test.xml") ;

    Pour la lecture, j'ai utiliser la methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaTable2 -> LoadFromFile("c:\\test.xml") ;

    Je retrouve bien les enregistrements dans ma table, mais quand je quitte l'application et je relance l'execution, ma table est vide ???

    Ya t'il une explication !?!?

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Sur le Site un lien sur un tuto qui comporte plusieurs liens, une tres longue lecture

  4. #4
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Citation Envoyé par kmaniche
    Je retrouve bien les enregistrements dans ma table, mais quand je quitte l'application et je relance l'execution, ma table est vide ???

    Ya t'il une explication

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Citation Envoyé par kmaniche
    Ya t'il une explication
    Il y a quoi dans ton fichier XML ? Ca m'étonnerais franchement que le contenu de ton fichier soit du XML...(même si dans ton cas ça ne devrait rien avoir à voir avec le fait que ta table soit vide).

  6. #6
    say
    say est déconnecté
    Membre éprouvé
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 258
    Points
    1 258
    Par défaut
    Citation Envoyé par Neilos
    Il y a quoi dans ton fichier XML ? Ca m'étonnerais franchement que le contenu de ton fichier soit du XML...(même si dans ton cas ça ne devrait rien avoir à voir avec le fait que ta table soit vide).
    tu m'étonnes!!! si le savetofile s'organise pr mettre en xml comme un grand, je me suis fait chier pour rien...

    allez, suis sympa
    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
    void __fastcall ThreadExport::XMLExport(TDataSet * source,AnsiString dest)
    {
    SetMax(source->RecordCount);
     TXpObjModel* DOM = new TXpObjModel(NULL);
     TXpElement* elm;
     TXpElement* subelm;
     
     //Création de la balise XML
     DOM->FormattedOutput = true;
     DOM->Document->AppendChild(DOM->Document->CreateProcessingInstruction("xml","version =\"1.0\""));
     
     //Création de la balise root
     elm = DOM->Document->CreateElement("RootDocument");//ExtractFileName(dest));
     //DOM->Document->AppendChild(elm);
     
     //Ajout des enregistrements
     source->First();
     for (int t = 0; t < source->RecordCount; t++)       // nb d'enregistrements de la requête
        {
           subelm = elm->CreateChildElement("Entry");
           for (int i = 0; i < source->FieldCount; i++)     // ... et son nb de champs
               subelm->CreateChildElement(source->Fields->Fields[i]->DisplayName)
                            ->CreateChildText(source->Fields->Fields[i]->AsString);
           source->Next();
           Synchronize(Progress);
        }
     DOM->Document->AppendChild(elm);
     //Sauvegarde de l'arbre
     DOM->SaveToFile((dest.Pos(ExtractFileExt(".xml")) != 0
                            ?dest.SubString(0,dest.Pos(ExtractFileExt(".xml"))-1)
                            :dest)
                            +".xml");
     delete DOM;
    }
    A titre d'info, j'utilise XMLPartner

    le format du fichier en sortie :
    (pas hyper généric, je le conçois)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <RootDocument>
      <Entry>
        <nom_du_champ1>    </nom_du_champ1>
        <nom_du_champ2>    </nom_du_champ2>
        <nom_du_champ3>    </nom_du_champ3>
    [...]
      </Entry>
    </RootDocument>

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Pas mal, c'est bien XMLPartner je ne connais pas du tout ?

  8. #8
    say
    say est déconnecté
    Membre éprouvé
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 258
    Points
    1 258
    Par défaut
    Honnetêment, on en est hyper content, il gère les instructions xpath ce qui n'est pas négligeable, relativement simple à utiliser. En fait, il faut surtout bien comprendre la logique XML et notamment le DOM.

    En fait, c'est une boîte qui développait ça si je ne m'abuse et qui l'a livrait au monde du libre (on trouve XMLPartner sur sourceForge) lorsqu'elle a fermé.*

    voilou...

    P.S : désolé pour les posts successifs .

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Xpath ça m'intéresse pas mal...je suis assez familier avec tout ça et j'avoue que le TXMLDocument me gonfle un peu (manque le XPath).

    C'est payant comme truc ?

    P.S. Pas de pb pour le multipost, comme tu vois c'est rattrapé

  10. #10
    say
    say est déconnecté
    Membre éprouvé
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 258
    Points
    1 258
    Par défaut
    Ah, le Xpath c'est de la boulette
    C'est exactement pour ça que je me suis lancé avec Xmlpartner

    absolument pas payant, la socièté qui le commercialisait l'a donné à la communauté.
    je m'en sers à tout bout de champ, j'adore (bon j'adore l'XML aussi alors forcèment).

    En revanche, en ce qui concerne la maintenance, je pense que c'est assez calme...et j'ai bien peur qu'il soit pas compatible avec BDS

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    J'aime beaucoup le XML moi aussi....
    Bon je testerais ça ce week end sous BDS, ou alors va falloir partir à la chasse aux libs gratuites

    Merci pour l'info !

  12. #12
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    Pour répondre à la question posée, avec table cela ne fonctionne pas en lecture (import), mais avec un dataset cela marche bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ADODataSet1->SaveToFile("C:\\Table.xml",pfXML);
    ADODataSet1->LoadFromFile("C:\\Table.xml");
    Je n'est pas réussi à réutiliser ce code généré en XML pour créer une table avec données, par contre pour remplir une table existante c'est parfait.

    Attention quand même aux champsNumAuto indexé car on ne pourra pas les réintégrés!! (champs à banir donc dans cette démarche)

  13. #13
    say
    say est déconnecté
    Membre éprouvé
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 258
    Points
    1 258
    Par défaut
    le savetofile génére du XML???
    C'est quoi le format please?

  14. #14
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    Ci joint exemple de fichier généré:

    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
    <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
    	xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
    	xmlns:rs='urn:schemas-microsoft-com:rowset'
    	xmlns:z='#RowsetSchema'>
    <s:Schema id='RowsetSchema'>
    	<s:ElementType name='row' content='eltOnly' rs:updatable='true'>
    		<s:AttributeType name='PS' rs:number='1' rs:nullable='true' rs:maydefer='true' rs:write='true' rs:basetable='TParcMateriel'
    			 rs:basecolumn='PS'>
    			<s:datatype dt:type='string' dt:maxLength='15'/>
    		</s:AttributeType>
    		<s:AttributeType name='c1' rs:name='DateCréationSAP' rs:number='2' rs:nullable='true' rs:maydefer='true' rs:write='true'
    			 rs:basetable='TParcMateriel' rs:basecolumn='DateCréationSAP'>
    			<s:datatype dt:type='dateTime' rs:dbtype='variantdate' dt:maxLength='16' rs:fixedlength='true'/>
    		</s:AttributeType>
    		<s:AttributeType name='c2' rs:name='DateDernièreModifSAP' rs:number='3' rs:nullable='true' rs:maydefer='true'
    			 rs:write='true' rs:basetable='TParcMateriel' rs:basecolumn='DateDernièreModifSAP'>
    			<s:datatype dt:type='dateTime' rs:dbtype='variantdate' dt:maxLength='16' rs:fixedlength='true'/>
    		</s:AttributeType>
    		<s:AttributeType name='Implant' rs:number='4' rs:nullable='true' rs:maydefer='true' rs:write='true' rs:basetable='TParcMateriel'
    			 rs:basecolumn='Implant'>
    			<s:datatype dt:type='string' dt:maxLength='8'/>
    		</s:AttributeType>
    		<s:AttributeType name='TypeObjet' rs:number='5' rs:nullable='true' rs:maydefer='true' rs:write='true' rs:basetable='TParcMateriel'
    			 rs:basecolumn='TypeObjet'>
    			<s:datatype dt:type='string' dt:maxLength='5'/>
     
    ......................
     
    </s:Schema>
    <rs:data>
    	<z:row Implant='NF007494' TypeObjet='4435' Equipement='10252032' c6='0' DateMiseService='2006-10-31T00:00:00'
    		 NomConstructeur='TOKHEIM SOFITAM APPLICATIONS' c13='TPITK' c14='TPITK' EtatEquipement='0' SimpleOuDoubleFace='1'
    		 NbLancesBD='0' c19='0' NombreLancesActives='0' AspirationOuRrefoulement='0' c24='0' c25='0' TypePistolet='0'
    		 c29='0' PartenaireFacturationGPL='0' TypeEquipementGestion='0'/>
    	<z:row Implant='NF007494' TypeObjet='4435' Equipement='10229984' c6='0' DateMiseService='2006-10-31T00:00:00'
    		 NomConstructeur='TOKHEIM SOFITAM APPLICATIONS' c13='TPITK' c14='TPITK' EtatEquipement='0' SimpleOuDoubleFace='1'
    		 NbLancesBD='0' c19='0' NombreLancesActives='0' AspirationOuRrefoulement='0' c24='0' c25='0' TypePistolet='0'
     
    ......................
     
    		 AspirationOuRrefoulement='0' c24='0' c25='0' TypePistolet='0' c29='0' PartenaireFacturationGPL='0' TypeEquipementGestion='0'/>
    	<z:row Implant='NF088627' TypeObjet='4424' Equipement='10347661' c6='0' NomConstructeur='TOKHEIM SOFITAM APPLICATIONS'
    		 c13='TPITK' c14='TPITK' EtatEquipement='0' SimpleOuDoubleFace='2' NbLancesBD='0' c19='0' NombreLancesActives='0'
    		 AspirationOuRrefoulement='0' c24='0' c25='0' TypePistolet='0' c29='0' PartenaireFacturationGPL='0' TypeEquipementGestion='0'/>
    </rs:data>
    </xml>
    Description
    Appelez la méthode SaveToFile pour écrire les données d'un ensemble de données client dans un fichier externe afin de les utiliser ultérieurement dans cet ensemble de données ou un autre.
    FileName spécifie le nom du fichier externe à utiliser. Si le fichier existe déjà, son contenu est remplacé. Si une chaîne vide est transmise dans le paramètre FileName (ou, dans Delphi, si ce paramètre est omis), les données sont enregistrées dans le fichier spécifié par la propriété FileName .

    Format indique le format utilisé lors de l'enregistrement des données : binaire (dfBinary), XML (dfXML) ou XML UTF8 (dfXMLUTF8).

  15. #15
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut
    Lut,

    je suis interessé par la solution d'import avec le Dataset si ca fonctionne...
    mais je ne l'ai jamais utilisé, comment faut-il le parametrer ?

    merci

  16. #16
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    En import tu n'as rien à paramétrer, il suffit que tes champs correspondent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADODataSet1->LoadFromFile("C:\\Table.xml");

  17. #17
    say
    say est déconnecté
    Membre éprouvé
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 258
    Points
    1 258
    Par défaut
    Citation Envoyé par Neilos
    J'aime beaucoup le XML moi aussi....
    Bon je testerais ça ce week end sous BDS, ou alors va falloir partir à la chasse aux libs gratuites

    Merci pour l'info !
    petit retour tardif, as tu pu tester avec BDS?

    tch'o

  18. #18
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut
    re je suis sous BDS en passant et le simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADODataSet1->LoadFromFile("C:\\Table.xml");
    ne fonctionne pas dans le sens ou je n'ai rien dans ma table sans aucune erreur ?
    j'ai ajouté juste un ADODataSet1 sans rien toucher au proprieté

    PS: dmg que le Load de ADOtable ne fonctionne pas en ecriture ?

  19. #19
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    tu met un simple dans la commandtext de ton adodataset.
    et tu active ton dataset

  20. #20
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut
    Apprement ca fait pareil!

    par contre j'ai exporté ma table en xml avec le ADOTable ?! mais je ne pense pas que ca vienne de la...

    //--------
    No apparement les fichiers xml de sortie sont identique... comprend po

Discussions similaires

  1. taille d'une table access dans la base
    Par chris401 dans le forum Access
    Réponses: 6
    Dernier message: 13/09/2006, 17h56
  2. Réponses: 6
    Dernier message: 16/06/2006, 14h22
  3. Réponses: 5
    Dernier message: 25/04/2006, 10h33
  4. enregistrer une liste chainée dans un fichier?
    Par ALF-Teams dans le forum C
    Réponses: 7
    Dernier message: 08/03/2006, 19h42

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