Plusieurs enregs dans une requête--> 1 seul en export txt

cs_manudel Messages postés 63 Date d'inscription lundi 29 avril 2002 Statut Membre Dernière intervention 7 mars 2005 - 27 août 2002 à 13:14
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 30 août 2002 à 00:24
J'ai une requête SQL qui me ramène plusieurs lignes.
Cette requête comporte 2 champs dans sa clause SELECT.

Je fais une exportation de données dans un fichier texte.

Toutes mes requêtes SQL me ramène un enregistrement, sauf celle-ci.

Le problème est qu'à chaque enregistrement va correspondre une lettre word.
(les enregistrements sont séparés par des "~").
Je ne dois avoir qu'un enregistrement à la fois, donc.

J'avais pensé à créer un champ calculé sous delphi, mais de quel type le définir ?
Le même que le champ de départ ?

Quelle solution adopter ?

3 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
29 août 2002 à 02:50
Je n'arrive pas à cerner exactement ton problème...

Est-ce un problème d'avoir plusieurs enregistrements ?
La "lettre word" est-elle une lettre que tu dois ajouter à chaque enregistrement ?

--- :sleepy) Nono du Moulin :sleepy) ---
0
cs_manudel Messages postés 63 Date d'inscription lundi 29 avril 2002 Statut Membre Dernière intervention 7 mars 2005
29 août 2002 à 12:30
Je vais préciser ma question :

Je récupère des données, avec des requêtes SQL que je mets dans des oracledatasets.
J'ai des champs persistants.
Chaque requête me ramène au plus un enregistrement.

Je génère ensuite un fichier texte, qui a cette forme :
chaque champ par des "@" et chaque enregistrement est séparé par des "~".

@ADHR_NO_ADHER@ADHR_CIV_CORR~
@20380@M.@ROGER~
@20381@M.@BERNARD~

Ce fichier est destiné à un document de fusion Word.
A chaque enregistrement va correspondre une lettre.

Mon problème est que j'ai une autre requête SQL, qui elle me ramène au plus 13 enregistrements,
ainsi, si je reprends le premier enregistrement de l'exemple ci-dessus :
@20380@M.@ROGER~

Le résultat de cette requête, dans la mesure où je ne parcours pas le dataset, va être
le premier enregistrement.
Donc, les autres enregistrements ne seront pas inclus dans le fichier texte, si le nombre
d'enregistrements ramené par ma requête est supérieur à 1.

Du point de vue technique, je suis bloqué.

Doit-on déclarer autant de variables que de champs à ramener (13 * 3 dans mon cas) ?

Comment gérer le fait que la table utilisée dans ma requête n'est pas statique ?
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
30 août 2002 à 00:24
Bon, j'ai un peu mieux compri, mais je ne vois pas ton problème : pourquoi tu ne parcours pas la base pour créer le fichier texte ?
Si tes données viennent d'Oracle, je suppose que tu utilises un TQuery. Il est alors tout à fait possible de parcourir le résultat :
AssignFile(Fichier,'MonFichier.Txt');
Rewrite(Fichier);
WriteLn(Fichier,'... // titre des colonnes
With TQuery Do
SQL.Clear
SQL.Add().. // en fonction de ce que tu veux
Open;
First;
While Not EOF Do
Begin
// ecriture du fichier texte
WrieLn(Fichier,.....
Next;
End;
Close;
End;

Ainsi, même si le résultat de ta requète contient plusieurs lignes alors le fichier texte contiendra le contenu de toutes les lignes. Il n'est jamais necessire de créer un composant par enregstrement/champ mais seulement un par colonne.

J'espère avoir repondu à la question................

--- :sleepy) Nono du Moulin :sleepy) ---
0
Rejoignez-nous