avril
2008
Je travaille sous Crystal 10 et les reports que je fais en ce moment exploitent des données XML. Et comme pour certaines bases de données, il faut passer par un lien ODBC…
J’avoue que j’ai pas mal cherché avant de trouver les infos qui m’ont permis de réaliser les 1ers tests concluants…
D’abord j’ai naïvemet pensé qu’il suffisait de lier le report au fichier XML en direct, et qu’un fichier XML formaté par access pourrait faire l’affaire pour mes 1ers tests. Grâve erreur, j’ai multiplié les tests foireux…
Mes recherches sur l’aide et dans google m’ont appris les choses suivantes :
1: il faut faire un lien ODBC. Le driver est installé avec Crystal Report et ne peut servir que pour Crystal.
2: il y a des règles pour préparer les fichiers XML… Je m’en serais douté mais je n’imaginais pas au départ qu’un export access au format XML ne ferait pas l’affaire.
Heureusement, après de longueus recherches j’ai trouvé ce document : cr_xml_data_sources.pdf… Merci Crystal, je regrette juste que les explications de ce document ne figurent pas dans l’aide.
Pour la création du lien ODBC rien de bien compliqué. On choisit le driver CR XML, on indique un nom de source de données (le nom du lien ODBC) et on indique le dossier où sont les fichiers XML. C’est ensuite dans Crystal qu’on choisira le (ou les) bon fichiers de données.
Pour le formalisme des fichiers XML j’ai trouvé 3 possibilités.
1- fichier XML le plus simple : on y met les données sans déclarer la structure… C’est le « Raw XML » décrit en page 15 de ce document.
<record>
<MovieName>Star Wars</MovieName>
<LeadActor>Mark Hamill</LeadActor>
<YearReleased>1977</YearReleased>
<MovieDescription>Set "a long long time ago in a galaxy far, far away", Star Wars set the standard for science fiction films.</MovieDescription>
</record>
<record>
<MovieName>The Terminator</MovieName>
<LeadActor>Arnold Schwarzenegger</LeadActor>
<YearReleased>1984</YearReleased>
<MovieDescription>This film placed Arnold Schwarzenegger in the A list of Hollywood actors.</MovieDescription>
</record>
</Sample_Raw_XML_Document>
2- Un fichier XML avec les données et le schéma des données. C’est le « ADO XML » décrit en page 16 du document.
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly">
<s:AttributeType name="MOVIENAME" rs:number="1" rs:nullable="true" rs:writeunknown="true">
<s:dataType dt:type="string" dt:maxLength="25" rs:precision="25" />
</s:AttributeType>
<s:AttributeType name="LEADACTOR" rs:number="2" rs:nullable="true" rs:writeunknown="true">
<s:dataType dt:type="string" dt:maxLength="30" rs:precision="30" />
</s:AttributeType>
<s:AttributeType name="YEARRELEASED" rs:number="3" rs:nullable="true" rs:writeunknown="true">
<s:dataType dt:type="string" dt:maxLength="4" rs:precision="4" />
</s:AttributeType>
<s:extends type="rs:rowbase" />
</s:ElementType>
</s:Schema>
<rs:data>
<z:row MOVIENAME="Star Wars" LEADACTOR="Mark Hamill" YEARRELEASED="1977" />
<z:row MOVIENAME="The Terminator" LEADACTOR="Arnold Schwarzenegger" YEARRELEASED="1984" />
</rs:data>
</xml>
3- Un fichier XML avec les données et un autre avec le schéma des données. C’est le « Data Island XML » décrit en page 17 du document.
<XML_DATA_ISLAND_SAMPLE xmlns="x-schema:DD_16394.xml">
<_Record>
<MOVIENAME>Star Wars</MOVIENAME>
<LEADACTOR>Mark Hamill</LEADACTOR>
<YEARRELEASED>1977</YEARRELEASED>
</_Record>
<_Record>
<MOVIENAME>The Terminator</MOVIENAME>
<LEADACTOR>Arnold Schwarzenegger</LEADACTOR>
<YEARRELEASED>1984</YEARRELEASED>
</_Record>
</XML_DATA_ISLAND_SAMPLE>
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="XML_DATA_ISLAND_SAMPLE" content="eltOnly" order="many">
<element type="_Record" />
</ElementType>
<ElementType name="_Record" content="eltOnly" order="many">
<element type="MOVIENAME" />
<element type="LEADACTOR" />
<element type="YEARRELEASED" />
</ElementType>
<ElementType name="MOVIENAME" content="textOnly" dt:type="string" />
<ElementType name="LEADACTOR" content="textOnly" dt:type="string" />
<ElementType name="YEARRELEASED" content="textOnly" dt:type="i2" />
</Schema>
Pour ma part j’ai testé les 3 solutions présentées. Je les ai testé en Crystal 10 et j’ai obtenu les résultats suivants :
1 : Accès corrects aux données, mais sur un fichier de tests plus volumineux que l’exemple la distinction entre données texte et numérique ne se faisait plus.
2 : Je n’ai pas reussi à accéder aux données… j’ai du faire une erreur quelque part mais je n’ai pas trouvé où…
3 : C’est ce que je vais mettre en place. Les données se génèrent facilement, le schéma des données est à part et tous les formats déclarés sont reconnus sans soucis dans crystal… Le rêve pour moi
3 Commentaires + Ajouter un commentaire
Commentaires récents
- DVD, version française et version Québécoise… reflexion qui va plus loin que les apparences. dans
- Les rétroliens, outil ou aimant à spams ? dans
- DVD, version française et version Québécoise… reflexion qui va plus loin que les apparences. dans
- DVD, version française et version Québécoise… reflexion qui va plus loin que les apparences. dans
- DVD, version française et version Québécoise… reflexion qui va plus loin que les apparences. dans
Extra merci
En fait la Question du forum est un peu annexe à cette problèmatique là mais a aussi été résolue, je vais donc poster un topo
Bravo, et en plus tu l’a fais sans l’aider du forum ;).
T’as vu, personne n’a pu répondre, tu dois être le premier à faire cette manip…..
Est-ce que tu pourrai recopier ta réponse sur le forum, pour avoir une trace ?
Merci,
sur_uix