Liaisons entre fichiers

Gestion d'une section

Dans un layout, vous pouvez lier des fichiers entre eux pour obtenir l'information nécessaire à remplir votre layout. Pour ce faire, il faut faire un clic droit sur ce qu'on appelle "la Section" en bas a gauche du layout et choisir "Propriétés de la section".

Gestion des relations entre fichiers

Dans le fenêtre de la section, faites un clic droit sur le fichier dont vous voulez modifier la relation, et choississez "Relation" :


La fenêtre suivante vous indique la relation actuelle entre les deux fichiers :

Expression parent

Une expression parent représente la valeur venant du fichier principal par rapport a laquelle nous voulons lier notre fichier. Dans ce cas, le numéro de facture.

Expression descendant

Une expression descendant représente la valeur venant de notre fichier "secondaire" par rapport a laquelle nous voulons lier notre fichier. Dans ce cas, le numéro de facture.

Type de relation

Le type de relation indique la relation attendue entre les deux fichiers.

Deux cas sont possibles :

  • Une relation un pour un : cela indique que la relation attendue entre chaque ligne du fichier principal n'est censé avoir qu'une et une seule correspondance avec le fichier secondaire. Par exemple, un numéro de client dans une facture, n'aura de relation qu'avec un et un seul client dans le fichier client.
  • Une relation un pour plusieurs : cela indique que la relation attendue avec chaque ligne du fichier principal peut avoir plusieurs correspondance dans le fichier secondaire. Par exemple, une facture peut contenir plusieurs pièces, on aura donc une relation un à plusieurs entre le fichier des factures et le fichier du contenu des factures.

Index et clés

Certains fichiers contiennent des indexs, il s'agit de fichier permettant d'accélerer les recherches dans des fichiers contenant un nombre conséquent de données. Il sera toujours bon de les utiliser dans la mesure du possible pour permettre au document de se génerer le plus rapidement possible.

Par défaut, les éléments sont triés par enregistrement, c'est a dire par l'ordre dans lequel ils ont été encodés. (L'enregistrement étant un numéro d'ordre attribué automatiquement).

Vous pouvez spécifier un index en cliquer sur Changer, puis en sélectionnant l'index voulu. Dans ce cas, l'index Paiement, puis en cliquant sur OK.

L'index est désormais sélectionné :

INFORMATION

Le fait de sélectionner un index, modifie la valeur de l'expression descendant, il faudra donc la faire correspondre dans l'expression parent.


Construction d'une expression

Pour construire une relation, vous devez utiliser différents élément pour composer une chaine avec suffisament d'information pour lié deux éléments de façon unique. Par exemple, si votre numérotation de facture est faites de manière à avoir un numéro unique pour chacune de vos factures, alors le numéro des factures est une bonne façon de faire une liaison entre une facture et son contenu. Mais elle pourrait être un mauvais choix si chaque année vous remettez votre compteur de facture à 0.


Dans ce genre de cas, on fera une composition de différentes valeurs afin de ne pas mélanger les informations. On rajoutera donc par exemple l'année à la chaine pour identifier le bon document, et, si l'on travaille avec plusieurs sociétés, le numéro de la société.


Reprenons donc l'exemple d'une facture et de son contenu. Nous avons deux fichiers : 

  • Facture
  • Factart


Chacun de ses fichiers contients 3 champs qui nous aideront à réaliser notre liaison unique, à savoir, 

  • "Numsoc", le numéro de la société
  • "Numfact", le numéro de la facture
  • "Datefact", la date de la facture


On va donc composer une chaine de caractère unique basée sur ces 3 champs et sur la taille de chacun d'eux.

  •  str(Numsoc,2) pour avoir le numéro de société du 2 caractères (la taille du champ)
  • Numtrim(Year(Datefact)) pour avoir l'année en 4 caractères (et non chiffre)
  • str(Numfact,8) pour avoir le numéro de la facture sur 8 caractères (la taille du champ).


Et le résultat nous donnera str(Numsoc,2)+Numtrim(Year(Datefact))+Str(Numfact,8) qui sera notre condition de liaison.