Files
XdlOrm/doc/qxorm_fr/quick_sample.html
2026-04-03 11:32:07 +08:00

460 lines
28 KiB
HTML
Raw Blame History

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>QxOrm : C++ Qt ORM Object Relational Mapping database library - QxEntityEditor : C++ Qt entities graphic editor
(data model designer and source code generator)</title>
<link rel='stylesheet' type='text/css' href='./resource/qxorm_style.css'>
<script type="text/javascript" src="./resource/jquery.min.js"></script>
<script type="text/javascript" src="./resource/qxorm_script.js"></script>
</head>
<body>
<table border="0" style="width: 80%" align="center">
<col>
<col>
<col>
<col>
<col>
<tbody>
<tr>
<td><a href="./home.html"><img alt="QxOrm" src="./resource/logo_qxorm_and_qxee.png" align="left" border="0"></a>
</td>
<td align="right" style="vertical-align:bottom">
<div id="qx_search">
<gcse:search></gcse:search>
</div>
</td>
<td width="15"></td>
<td align="right" style="vertical-align:bottom">
<img alt="Windows" src="./resource/logo_windows.gif" width="35" height="35">
<img alt="Linux" src="./resource/logo_linux.gif" width="35" height="35">
<img alt="Macintosh" src="./resource/logo_mac.gif" width="35" height="35">
</td>
<td width="70"><img alt="C++" src="./resource/logo_cpp.gif" width="50" height="50" align="right"></td>
</tr>
</tbody>
</table>
<hr style="width: 80%" align="center" size="1" color="#100D5A">
<table border="0" style="width: 80%" align="center">
<col>
<col>
<col>
<col>
<col>
<col>
<tbody>
<tr>
<td align="center"><a href="./home.html" class="btn_nav">Accueil</a></td>
<td align="center"><a href="./download.html" class="btn_nav">T<EFBFBD>l<EFBFBD>chargement</a></td>
<td align="center"><a href="./quick_sample.html" class="btn_nav">Exemple rapide</a></td>
<td align="center" onmouseover="showHideElementById('menu_tuto', true);"
onmouseout="showHideElementById('menu_tuto', false);">
<a href="./tutorial.html" class="btn_nav">Tutoriel (4)</a>
<table class="table_menu_tuto">
<tbody>
<tr>
<td>
<div id="menu_tuto" class="div_menu_tuto">
<a href="./tutorial_3.html" class="btn_sub_menu">install QxOrm</a><br />
<a href="./tutorial.html" class="btn_sub_menu">qxBlog</a><br />
<a href="./tutorial_2.html" class="btn_sub_menu">qxClientServer</a><br />
<a href="./tutorial_4.html" class="btn_sub_menu">QxEntityEditor videos</a>
</div>
</td>
</tr>
</tbody>
</table>
</td>
<td align="center" onmouseover="showHideElementById('menu_manual', true);"
onmouseout="showHideElementById('menu_manual', false);">
<a href="./manual.html" class="btn_nav">Manuel (2)</a>
<table class="table_menu_manual">
<tbody>
<tr>
<td>
<div id="menu_manual" class="div_menu_manual">
<a href="./manual.html" class="btn_sub_menu">Manuel QxOrm</a><br />
<a href="./manual_qxee.html" class="btn_sub_menu">Manuel QxEntityEditor</a><br />
</div>
</td>
</tr>
</tbody>
</table>
</td>
<td align="center"><a href="./link.html" class="btn_nav">Forum</a></td>
<td align="center"><a href="./customer.html" class="btn_nav">Nos clients</a></td>
</tr>
</tbody>
</table>
<hr style="width: 80%" align="center" size="1" color="#100D5A">
<table border="0" style="width: 80%" align="center">
<col>
<col>
<col>
<col>
<col>
<col>
<tbody>
<tr>
<td align="left" valign="top">
<font size="2" class="txt_with_shadow">QxOrm &gt;&gt; Exemple rapide</font>
</td>
<td align="right" valign="top">
<table cellspacing="0" cellpadding="1">
<col>
<col>
<tbody>
<tr>
<td align="right" valign="top">
<font size="2" class="txt_with_shadow">Version courante :&nbsp;</font>
</td>
<td align="left" valign="top">
<font size="2" class="txt_with_shadow">QxOrm 1.5.0 - <a href="../doxygen/index.html"
target="_blank">documentation en ligne de la biblioth<74>que QxOrm</a> - <a
href="https://github.com/QxOrm/QxOrm" target="_blank">GitHub</a></font>
</td>
</tr>
<tr>
<td align="right" valign="top">
<font size="2" class="txt_with_shadow"></font>
</td>
<td align="left" valign="top">
<font size="2" class="txt_with_shadow">QxEntityEditor 1.2.8</font>
</td>
</tr>
</tbody>
</table>
</td>
<td width="10px"></td>
<td width="40px" height="30px"><a href="../qxorm_fr/quick_sample.html"><img alt="Version fran<61>aise du site"
src="./resource/FR.png" width="40" height="30" border="0"></a></td>
<td width="40px" height="30px"><a href="../qxorm_en/quick_sample.html"><img alt="Web site english version"
src="./resource/GB.png" width="40" height="30" border="0"></a></td>
<td width="40px" height="30px"><a href="http://sites.google.com/site/qxormpostgres/" target="_blank"><img alt=""
src="./resource/ES.png" width="40" height="30" border="0"></a></td>
</tr>
</tbody>
</table>
<table border="1" frame="vsides" rules="cols" style="width: 80%" align="center" cellpadding="6" bgcolor="#F2F2F4">
<col>
<tbody>
<tr>
<td align="justify">
<table border="0" style="width: 100%" align="center">
<col>
<col>
<tbody>
<tr>
<td><b>Dans ce chapitre, nous allons traiter un exemple
rapide d'utilisation qui pr<70>sente les fonctionnalit<69>s de base de la
biblioth<74>que QxOrm.</b> <br>
<br>
<i>Remarque :</i> la biblioth<74>que <b>QxOrm</b> utilise les <b>conventions d'<27>criture de code C++</b>
suivantes :
<ul>
<li>toutes les classes, fonctions, variables, etc... sont d<>finies sous le <a
href="./resource/qxorm.namespace.qx.jpg"><i>namespace qx</i></a>
</li>
<li>les macro de QxOrm sont <20>crites sous la forme <i>QX_...</i>
</li>
<li>les classes abstraites (ou interfaces) sont pr<70>fix<69>es par <i>Ix</i> (par exemple
<i>IxFactory</i> est une interface pour la cr<63>ation d'instances)
</li>
<li>les autres classes sont pr<70>fix<69>es par <i>Qx</i> (par exemple <i>QxDataMember</i>)
</li>
<li>les collections d'objets ont pour suffixe <i>X</i> (par exemple <i>QxDataMemberX</i> est une
collection de <i>QxDataMember</i>)
</li>
<li>les fonctions pour communiquer avec les bases de donn<6E>es se trouvent sous le <a
href="./resource/qxorm.namespace.qx.dao.jpg"><i>namespace qx::dao</i></a> (par exemple
<i>qx::dao::fetch_by_id()</i>)
</li>
<li>les fonctions pour la <i>serialization</i> des donn<6E>es se trouvent sous le <a
href="./resource/qxorm.namespace.qx.serialization.jpg"><i>namespace qx::serialization</i></a>
(par exemple <i>qx::serialization::xml::to_file()</i>)
</li>
<li>le moteur de <i>reflection</i> est accessible depuis la classe <b><i>qx::QxClassX</i></b> (par
exemple <i>qx::QxClassX::invoke()</i> pour invoquer une m<>thode de classe)
</li>
<li>les classes de traits se trouvent sous le <a
href="./resource/qxorm.namespace.qx.trait.jpg"><i>namespace qx::trait</i></a> (par exemple
<i>qx::trait::is_smart_ptr&lt;T&gt;</i>)
</li>
</ul>
</td>
<td width="200" align="center" valign="top"><a href="./resource/qt_ambassador_logo.png"
target="_blank"><img alt="qt_ambassador" src="./resource/qt_ambassador_logo_150x150.png" width="150"
height="150" border="0"></a><br>
<b>
<font size="2">QxOrm library has been accepted into the <a
href="http://forum.qt.io/category/24/qt-ambassador-program" target="_blank">Qt Ambassador
Program</a></font>
</b>
</td>
</tr>
</tbody>
</table>
<i>Autre Remarque :</i> un exemple plus complet (avec notion d'h<>ritage, de
relations entre tables, de collections, de libraries partag<61>es, de
memory leak, etc...) est pr<70>sent dans le dossier <i>./test/qxDllSample/</i> de la
distribution de QxOrm. Ce dossier <i>./test/qxDllSample/</i> contient 2 projets de
type dll et 1 projet de type ex<65>cutable : <i>./dll1/</i>,
<i>./dll2/</i> et <i>./exe/</i>.<br> La solution compl<70>te peut <20>tre
compil<69>e avec <b>Visual C++ 2008, 2010 ou 2012</b> sous Windows (ouvrir le fichier
<i>./test/qxDllSample/test.sln</i>).<br>
Elle peut <20>tre <20>galement compil<69>e avec <b>GCC</b> sous Linux et <b>MinGW</b> sous Windows en utilisant la
commande <i>qmake</i>. <br>
<br>
L'exemple qui suit pr<70>sente diff<66>rentes <20>tapes :
<ul>
<li><a href="#quick_sample_1">1- fichier <i>drug.h</i> : d<>finition
d'une classe <i>drug</i> avec 3 attributs : <i>id</i>, <i>name</i>
et <i>description</i></a></li>
<li><a href="#quick_sample_2">2- fichier <i>drug.cpp</i> :
impl<70>mentation de la 'fonction de param<61>trage' : <i>void
qx::register_class()</i></a></li>
<li><a href="#quick_sample_3">3- fichier <i>main.cpp</i> :
pr<70>sentation des fonctionnalit<69>s de base de QxOrm avec la classe
<i>drug</i></a></li>
<li><a href="#quick_sample_4">4- ex<65>cution du programme de test et
affichage des traces g<>n<EFBFBD>r<EFBFBD>es</a></li>
<li><a href="#quick_sample_5">5- contenu du fichier
<i>./export_drugs.xml</i> cr<63><72> par le programme de test</a></li>
</ul>
<br>
<font color="#100D5A"><a name="quick_sample_1">*
-----------------------------------------------------------------------------------------------------<br>
* 1- fichier <i>drug.h</i> : d<>finition d'une classe <i>drug</i> avec 3
attributs : <i>id</i>, <i>name</i> et <i>description</i></a><br>
*
-----------------------------------------------------------------------------------------------------<br>
</font><br>
<table border="1" bgcolor="#FFFFFF">
<col>
<tbody>
<tr>
<td title="drug.h">
<pre><span class="pre">#ifndef _CLASS_DRUG_H_
#define _CLASS_DRUG_H_
</span><span class="keyword">
class</span> drug<span class="operator">
{</span><span class="keyword">
public</span><span class="operator">:</span><span class="type">
long</span> id<span class="operator">;</span>
QString name<span class="operator">;</span>
QString description<span class="operator">;</span>
drug<span class="operator">() :</span> id<span class="operator">(</span><span class="int">0</span><span class="operator">) { ; }</span><span class="keyword">
virtual</span><span class="operator"> ~</span>drug<span class="operator">() { ; }
};</span>
QX_REGISTER_HPP_MY_TEST_EXE<span class="operator">(</span>drug<span class="operator">,</span> qx<span class="operator">::</span>trait<span class="operator">::</span>no_base_class_defined<span class="operator">,</span><span class="int"> 1</span><span class="operator">)</span><span class="comment">
/* This macro is necessary to register 'drug' class in QxOrm context */
/* param 1 : the current class to register =&gt; 'drug' */
/* param 2 : the base class, if no base class, use the qx trait =&gt; 'qx::trait::no_base_class_defined' */
/* param 3 : the class version used by serialization to provide 'ascendant compatibility' */</span><span class="pre">
#endif <span class="comment">// _CLASS_DRUG_H_</span></span></pre>
</td>
</tr>
</tbody>
</table>
<br><br>
<font color="#100D5A"><a name="quick_sample_2">*
----------------------------------------------------------------------------------------------------<br>
* 2- fichier <i>drug.cpp</i> : impl<70>mentation de la 'fonction de
param<61>trage' : <i>void qx::register_class()</i><br>
*
----------------------------------------------------------------------------------------------------
</a></font><br><br>
<table border="1" bgcolor="#FFFFFF">
<col>
<tbody>
<tr>
<td title="drug.cpp">
<pre><span class="pre">#include <span class="string">"precompiled.h"</span> <span class="comment">// Precompiled-header with '#include &lt;QxOrm.h&gt;' and '#include "export.h"'</span>
#include <span class="string">"drug.h"</span> <span class="comment">// Class definition 'drug'</span>
#include <span class="string">&lt;QxOrm_Impl.h&gt;</span> <span class="comment">// Automatic memory leak detection and boost serialization export macro</span>
</span>
QX_REGISTER_CPP_MY_TEST_EXE<span class="operator">(</span>drug<span class="operator">)</span><span class="comment"> // This macro is necessary to register 'drug' class in QxOrm context
</span><span class="keyword">
namespace</span> qx<span class="operator"> {</span><span class="keyword">
template</span><span class="operator"> &lt;&gt;</span><span class="type"> void</span> register_class<span class="operator">(</span>QxClass<span class="operator">&lt;</span>drug<span class="operator">&gt; &amp;</span> t<span class="operator">)
{</span>
t<span class="operator">.</span>id<span class="operator">(&amp;</span> drug<span class="operator">::</span>id<span class="operator">,</span><span class="string"> "id"</span><span class="operator">);</span><span class="comment"> // Register 'drug::id' &lt;=&gt; primary key in your database
</span> t<span class="operator">.</span>data<span class="operator">(&amp;</span> drug<span class="operator">::</span>name<span class="operator">,</span><span class="string"> "name"</span><span class="operator">,</span><span class="int"> 1</span><span class="operator">);</span><span class="comment"> // Register 'drug::name' property with key 'name' and version '1'
</span> t<span class="operator">.</span>data<span class="operator">(&amp;</span> drug<span class="operator">::</span>description<span class="operator">,</span><span class="string"> "desc"</span><span class="operator">);</span><span class="comment"> // Register 'drug::description' property with key 'desc'
</span><span class="operator">}}</span></pre>
</td>
</tr>
</tbody>
</table>
<br>
<br>
<font color="#100D5A"><a name="quick_sample_3">*
-----------------------------------------------------------------------------------------------<br>
* 3- fichier <i>main.cpp</i> : pr<70>sentation des fonctionnalit<69>s de base
de QxOrm avec la classe <i>drug</i><br>
*
-----------------------------------------------------------------------------------------------
</a></font><br><br>
<table border="1" bgcolor="#FFFFFF">
<col>
<tbody>
<tr>
<td title="main.cpp">
<pre><span class="pre">#include <span class="string">"precompiled.h"</span>
#include <span class="string">"drug.h"</span>
#include <span class="string">&lt;QxOrm_Impl.h&gt;</span>
</span><span class="type">
int</span><span class="keyword"> main</span><span class="operator">(</span><span class="type">int</span> argc<span class="operator">,</span><span class="type"> char</span><span class="operator"> *</span> argv<span class="operator">[])
{</span>
QApplication app<span class="operator">(</span>argc<span class="operator">,</span> argv<span class="operator">);</span><span class="comment"> // Qt application
// Create 3 new drugs
// It is possible to use 'std' and 'Qt' smart pointer : 'std::shared_ptr', 'QSharedPointer', etc...
</span><span class="keyword"> typedef</span> std<span class="operator">::</span>shared_ptr<span class="operator">&lt;</span>drug<span class="operator">&gt;</span> drug_ptr<span class="operator">;</span>
drug_ptr d1<span class="operator">;</span> d1<span class="operator">.</span>reset<span class="operator">(</span><span class="keyword">new</span> drug<span class="operator">());</span> d1<span class="operator">-&gt;</span>name<span class="operator"> =</span><span class="string"> "name1"</span><span class="operator">;</span> d1<span class="operator">-&gt;</span>description<span class="operator"> =</span><span class="string"> "desc1"</span><span class="operator">;</span>
drug_ptr d2<span class="operator">;</span> d2<span class="operator">.</span>reset<span class="operator">(</span><span class="keyword">new</span> drug<span class="operator">());</span> d2<span class="operator">-&gt;</span>name<span class="operator"> =</span><span class="string"> "name2"</span><span class="operator">;</span> d2<span class="operator">-&gt;</span>description<span class="operator"> =</span><span class="string"> "desc2"</span><span class="operator">;</span>
drug_ptr d3<span class="operator">;</span> d3<span class="operator">.</span>reset<span class="operator">(</span><span class="keyword">new</span> drug<span class="operator">());</span> d3<span class="operator">-&gt;</span>name<span class="operator"> =</span><span class="string"> "name3"</span><span class="operator">;</span> d3<span class="operator">-&gt;</span>description<span class="operator"> =</span><span class="string"> "desc3"</span><span class="operator">;</span><span class="comment">
// Insert drugs into container
// It is possible to use a lot of containers from 'std', 'boost', 'Qt' and 'qx::QxCollection&lt;Key, Value&gt;'
</span><span class="keyword"> typedef</span> std<span class="operator">::</span>vector<span class="operator">&lt;</span>drug_ptr<span class="operator">&gt;</span> type_lst_drug<span class="operator">;</span>
type_lst_drug lst_drug<span class="operator">;</span>
lst_drug<span class="operator">.</span>push_back<span class="operator">(</span>d1<span class="operator">);</span>
lst_drug<span class="operator">.</span>push_back<span class="operator">(</span>d2<span class="operator">);</span>
lst_drug<span class="operator">.</span>push_back<span class="operator">(</span>d3<span class="operator">);</span><span class="comment">
// Init parameters to communicate with a database
</span> qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-&gt;</span>setDriverName<span class="operator">(</span><span class="string">"QSQLITE"</span><span class="operator">);</span>
qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-&gt;</span>setDatabaseName<span class="operator">(</span><span class="string">"./test_qxorm.db"</span><span class="operator">);</span>
qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-&gt;</span>setHostName<span class="operator">(</span><span class="string">"localhost"</span><span class="operator">);</span>
qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-&gt;</span>setUserName<span class="operator">(</span><span class="string">"root"</span><span class="operator">);</span>
qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-&gt;</span>setPassword<span class="operator">(</span><span class="string">""</span><span class="operator">);</span><span class="comment">
// Create table 'drug' into database to store drugs
</span> QSqlError daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>create_table<span class="operator">&lt;</span>drug<span class="operator">&gt;();</span><span class="comment">
// Insert drugs from container to database
// 'id' property of 'd1', 'd2' and 'd3' are auto-updated
</span> daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>insert<span class="operator">(</span>lst_drug<span class="operator">);</span><span class="comment">
// Modify and update the second drug into database
</span> d2<span class="operator">-&gt;</span>name<span class="operator"> =</span><span class="string"> "name2 modified"</span><span class="operator">;</span>
d2<span class="operator">-&gt;</span>description<span class="operator"> =</span><span class="string"> "desc2 modified"</span><span class="operator">;</span>
daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>update<span class="operator">(</span>d2<span class="operator">);</span><span class="comment">
// Delete the first drug from database
</span> daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>delete_by_id<span class="operator">(</span>d1<span class="operator">);</span><span class="comment">
// Count drugs into database
</span><span class="type"> long</span> lDrugCount<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>count<span class="operator">&lt;</span>drug<span class="operator">&gt;();</span><span class="comment">
// Fetch drug with id '3' into a new variable
</span> drug_ptr d_tmp<span class="operator">;</span> d_tmp<span class="operator">.</span>reset<span class="operator">(</span><span class="keyword">new</span> drug<span class="operator">());</span>
d_tmp<span class="operator">-&gt;</span>id<span class="operator"> =</span><span class="int"> 3</span><span class="operator">;</span>
daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>fetch_by_id<span class="operator">(</span>d_tmp<span class="operator">);</span><span class="comment">
// Export drugs from container to a file under xml format (serialization)
</span> qx<span class="operator">::</span>serialization<span class="operator">::</span>xml<span class="operator">::</span>to_file<span class="operator">(</span>lst_drug<span class="operator">,</span><span class="string"> "./export_drugs.xml"</span><span class="operator">);</span><span class="comment">
// Import drugs from xml file into a new container
</span> type_lst_drug lst_drug_tmp<span class="operator">;</span>
qx<span class="operator">::</span>serialization<span class="operator">::</span>xml<span class="operator">::</span>from_file<span class="operator">(</span>lst_drug_tmp<span class="operator">,</span><span class="string"> "./export_drugs.xml"</span><span class="operator">);</span><span class="comment">
// Clone a drug
</span> drug_ptr d_clone<span class="operator"> =</span> qx<span class="operator">::</span>clone<span class="operator">(*</span> d1<span class="operator">);</span><span class="comment">
// Create a new drug by class name (factory)
</span> qx<span class="operator">::</span>any d_any<span class="operator"> =</span> qx<span class="operator">::</span>create<span class="operator">(</span><span class="string">"drug"</span><span class="operator">);</span><span class="comment">
// Insert drugs container into 'qx::cache'
</span> qx<span class="operator">::</span>cache<span class="operator">::</span>set<span class="operator">(</span><span class="string">"drugs"</span><span class="operator">,</span> lst_drug<span class="operator">);</span><span class="comment">
// Remove all elements from 'qx::cache'
</span> qx<span class="operator">::</span>cache<span class="operator">::</span>clear<span class="operator">();</span><span class="comment">
// Create a dummy memory leak
</span> drug<span class="operator"> *</span> pDummy<span class="operator"> =</span><span class="keyword"> new</span> drug<span class="operator">();</span><span class="flow">
return</span><span class="int"> 0</span><span class="operator">;
}</span></pre>
</td>
</tr>
</tbody>
</table>
<br>
<p>
<font color="#100D5A"><a name="quick_sample_4">*
-------------------------------------------------------------------------<br>
* 4- ex<65>cution du programme de test et affichage des traces g<>n<EFBFBD>r<EFBFBD>es<br>
*
-------------------------------------------------------------------------</a>
</font><br>
</p>
<p></p>
<font size="2">[QxOrm] qx::QxSqlDatabase : create new database
connection in thread '3616' with key
'{d315250c-b5c9-46e0-9402-f800368a6673}'<br>
[QxOrm] sql query (78 ms) : CREATE TABLE drug (id INTEGER NOT NULL
PRIMARY KEY AUTOINCREMENT, name TEXT, desc TEXT)<br>
[QxOrm] sql query (63 ms) : INSERT INTO drug (name, desc) VALUES
(:name, :desc)<br>
[QxOrm] sql query (62 ms) : UPDATE drug SET id = :id, name = :name,
desc = :desc WHERE id = :id_bis<br>
[QxOrm] sql query (63 ms) : DELETE FROM drug WHERE id = :id<br>
[QxOrm] sql query (0 ms) : SELECT COUNT(*) FROM drug<br>
[QxOrm] sql query (0 ms) : SELECT drug.id AS drug_id_0, drug.name AS
drug_name_0, drug.desc AS drug_desc_0 FROM drug WHERE drug_id_0 =
:id<br>
[QxOrm] Leaked object at 0xf52ad8 (size 16, src\main.cpp:74)<br>
[QxOrm] **** 1 memory leaks found **** </font><br>
<br>
<p></p>
<font color="#100D5A"><a name="quick_sample_5">*
------------------------------------------------------------------------------<br>
* 5- contenu du fichier <i>./export_drugs.xml</i> cr<63><72> par le programme
de test<br>
*
------------------------------------------------------------------------------</a>
</font><br>
<br>
<a href="./resource/quick_sample.export_drugs.xml.txt"><img alt="quick_sample.export_drugs.xml"
src="./resource/quick_sample.export_drugs.xml.jpg" width="642" height="452" border="0"></a>
</td>
</tr>
</tbody>
</table>
<br>
<hr style="width: 80%" align="center" size="1" color="#100D5A">
<table border="0" style="width: 80%" align="center">
<col>
<col>
<col>
<tbody>
<tr>
<td align="left" valign="middle">
<img alt="QxOrm" src="./resource/logo_qxorm_small.png" width="168" height="40">
</td>
<td align="center" valign="middle">
<font size="2"><EFBFBD> 2011-202XDL Teamty - <a href="mailto:ic-east.com">ic-east.com</a></font>
</td>
<td align="right" valign="middle">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2K4Z58ZYAYJ6S">
<input type="image" src="./resource/paypal_support_qxorm_library.gif" border="0" name="submit"
alt="Support QxOrm library - PayPal">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
</tr>
</tbody>
</table>
</body>
</html>