Accueil du site > Les articles > Fusion traitement de textes OfficeVision avec Query.
Version à imprimer Enregistrer au format PDF

Fusion traitement de textes OfficeVision avec Query.

mercredi 11 août 2004, par Grégory Jarrige Visites  1429 Première mise en ligne le mardi 4 novembre 2003.

La "fusion" de documents TdT Office avec des fichiers AS/400 ne pose pas de problème particulier en règle générale. En effet, il suffit de déclarer dans le document des noms de variables conformes au nom des zones du fichier à "fusionner" et de préciser le nom du fichier d’origine. De même il est possible de "fusionner" sur le même principe un document TdT avec un Query. Là encore, pas de problème particulier. Mais ça se corse si l’on veut fusionner sur le document plusieurs fichiers.


Marche à suivre

Le cas le plus fréquent est celui où vous avez un fichier "entête" et un ou plusieurs fichiers "détail". Si le fichier entête ne contient qu’un seul enregistrement et que les enregistrements des fichiers détails correspondent tous à cet enregistrement, alors là pas de problème : il suffit de déclarer les zones du fichier entête comme ci-dessous (la ligne importante ici est "Lettres ou liste" :

Zone de données  . . . . .   __________ Nom
 Origine zone de données    <u>1</u>          1=A partir des options de fusion
                                       2=*PRINT  3=*NOTE
Lettres ou liste . . . . .   <u>1</u>          1=Plusieurs lettres 2=Liste colonne
ID fichier pour analyse  .   ___
Longueur de l'instruction      <u>1</u>        1 à 255, Blanc=Instruction entière

Source des données à fusionner .   <u>3</u>           1=Analyse
                                              2=Document
                                              3=Fichier

Fichier  . . . . . . . . . . .   __________   Nom
 Bibliothèque . . . . . . . .   <u>*LIBL     </u>   Nom, *LIBL
Membre . . . . . . . . . . . .   <u>*FIRST    </u>   Nom, *FILE, *FIRST, *LAST

Les zones des fichier détail devront être déclarées de la même façon mais il faudra saisir un "2" sur la ligne "Lettres ou liste". En effet le mode "Liste colonne" est celui qui permet d’imprimer plusieurs enregistrements d’un même fichier "en colonne" sur une même page.

Je le disais tout à l’heure, tout ça fonctionne très bien si l’on est dans le cas idéal où vous avez un seul enregistrement dans le fichier entête et que tous les enregistrements des fichiers détail correspondent à cet enregistrement entête. Mais si votre fichier entête contient plusieurs enregistrements vous débouchez sur une impasse car le TdT Office ne sait pas gérer ce cas de figure. Seul moyen pour s’en sortir, utiliser des Query sur les fichiers détail. Vous trouverez dans l’exemple ci-dessous la marche à suivre.

Exemple : Liste des fichiers à fusionner

     FT220  : fichier entête
     FT2201 : fichier détail n°1
     FT2203 : fichier détail N°2

En ce qui concerne les zones du fichier FT220, pas de changement, vous les déclarez dans votre document TdT de la même façon qu’auparavant.

Par contre, les zones des fichiers FT2201 et FT2203 doivent être déclarés de la façon suivante :

Zone de données  . . . . .   __________ Nom
 Origine zone de données    <u>1</u>          1=A partir des options de fusion
                                       2=*PRINT  3=*NOTE
Lettres ou liste . . . . .   <u>2</u>          1=Plusieurs lettres 2=Liste colonne
ID fichier pour analyse  .   ___
Longueur de l'instruction      <u>1</u>        1 à 255, Blanc=Instruction entière

Source des données à fusionner .   <u>1</u>           1=Analyse
                                              2=Document
                                              3=Fichier

Analyse  . . . . . . . . . . .   __________   Nom
 Bibliothèque . . . . . . . .   <u>*LIBL     </u>   Nom, *LIBL

Vous constatez que cette fois on ne déclare pas les zones comme étant en provenance d’un fichier mais d’une analyse Query. De manière arbitraire, j’ai décidé d’appeler le Query sur le fichier FT2201 en QRY2201 et celui sur le fichier FT2203 en QRY2203. Comme ces Query sont similaires dans le principe, je ne détaillerai ci-dessous que le QRY2201.

Dans le Query QRY2201 il n’y a que deux options qui nous intéressent. Il s’agit de "Choisir les fichiers" et "Choisir les enregistrements". Commençons par regarder l’option "Choisir les fichiers".

                        Choix des fichiers

Répondez, puis appuyez sur Entrée.
Faites F9 si vous souhaitez définir un fichier supplémentaire.
Fichier  . . . . . . .   <u>FT2201    </u>    Nom, ou F4 pour liste
 Biblio . . . . . . .   <u>DEVFIC    </u>    Nom, *LIBL, ou F4 pour liste
Membre . . . . . . . .   <u>*FIRST    </u>    Nom, *FIRST, ou F4 pour liste
Format . . . . . . . .   <u>FT2201A   </u>    Nom, *FIRST, ou F4 pour liste

Voyons maintenant l’option "Choisir les enregistrements" :

                    Choix des enregistrements

Entrez les comparaisons, appuyez sur ENTREE. Entrez OR pour un nouveau groupe.
Tests : EQ, NE, LE, GE, LT, GT, RANGE, LIST, LIKE, IS, ISNOT...
AND/OR  Zone             Test   Valeur (zone, nombre, 'caractères', ou ...)
       FTTPOS           EQ     :H8TPOS
AND    FTNROS           EQ     :H8NROS

Avant d’expliquer ce qui précède, il faut savoir que les zones FTTPOS et FTNROS correspondent au type et au numéro de commande dans le fichier FT2201 alors que les zones H8TPOS et H8NROS correspondent aux mêmes zones dans le fichier FT220 (fichier "maître"). On fait donc une sélection sur les identifiants des deux fichiers en "égalité sur clé".

Le fait d’avoir saisi dans la colonne "Valeur" les variables :H8TPOS et :H8NROS va entraîner l’affichage de l’écran complémentaire ci-dessous dans lequel on va préciser le fichier d’origine des zones H8TPOS et H8NROS (remarquez qu’est prévue la possibilité de faire un lien avec un autre Query).

              Choix des attributs de valeur subordonnée

Indiquez vos choix, puis appuyez sur ENTREE.
Type d'attribut  . . .   <u>2</u>            1=Analyse       2=Fichier

Analyse ou fichier . .   <u>FT220   </u>     Nom, ou F4 pour liste de fichiers
 Bibliothèque . . . .     <u>DEVFIC  </u>   Nom, *LIBL, ou F4 pour liste

Si vous avez choisi l'option 2=Fichier :
Membre du fichier  . .   <u>*FIRST  </u>     Nom, *FIRST, ou F4 pour liste

ATTENTION : Une des contraintes de ce système réside dans le fait que l’on est obligé de préciser les bibliothèques fichier à l’intérieur du Query ce qui obligera à reparamétrer le Query à chaque fois qu’on le mettra en place dans une autre bibliothèque fichier que celle précisée à l’origine dans le Query. Mais c’est un inconvénient mineur. L’autre inconvénient, plus important celui-là, réside dans le fait que la solution présentée dans cette note est très gourmande en ressources système et peut facilement mettre l’AS/400 "sur les genoux" si la taille des fichiers traités est trop importante. A utiliser avec modération.