Exemples d'utilisation des liens
Cas_de_deux_liens_AVEC_CONTEXTES
Cas de deux liens SIMPLES
Cas composant :
On veut obtenir, dans une facture, le champ DESIG du commercial attaché au client de la facture. EFAC est la table principale du composant facture. CLI et REPR sont les composants client et représentant
A l'utilisation, on notera l'expression suivante : EFAC->CLI->REPR.DESIG
Dans le descripteur de données, on mentionnera les informations suivantes dans la zone LIEN :
Pour les tables EFAC et I_EFAC: C:CLI au niveau du champ CLI_IDENT
Pour les tables CLI et I_CLI : C:REPR au niveau du champ REPR_IDENT
Le code qui sera exécuté implicitement lors de l'évaluation de l'expression sera :
AppliquerMethodeComposantLecture"GCPCLI"."LECTURE"(GCPEFAC.CLI_IDENT)
AppliquerMethodeComposantLecture"GCPREPR"."LECTURE"(I_GCPCLI.REPR_IDENT)
Le résultat obtenu est lu dans: I_REPR.DESIG
Cas non composant :
On veut obtenir le champ DESIG du commercial du client de la facture. CLI , REPR et EFAC sont des tables. Le résultat que l'on cherche est le même que dans le cas d'un lien entre composants. La méthode diffère en raison des automatismes liés aux composants.
A l'utilisation on notera l'expression suivante :
EFAC->CLI->REPR.DESIG
Dans le descripteur de données
on mentionnera les informations suivantes dans la zone LIEN :
Pour la table EFAC : R:CLI au niveau du champ CLI_IDENT
Pour la table CLI : R:REPR au niveau du champ REPR_IDENT
Le code qui sera exécuté implicitement lors de l'évaluation de l'expression sera :
Lire CLI.IDENT ,EgalA , EFAC.CLI_IDENT
Lire REPR.IDENT , EgalA , CLI.REPR_IDENT
Le résultat obtenu est lu dans: REPR.DESIG
/p>
Cas de deux liens AVEC CONTEXTES
Cas composant :
On veut obtenir le champ VILLE de l'adresse de facturation et le champ VILLE de l'adresse de livraison.
EFAC est la table principale du composant facture. ADR est le composant adresse.
ADRF et ADRL sont des contextes différents du même composant ADR, représentant les composants adresse_de_facturation et adresse_de_livraison.
A l'utilisation, on notera l'expression suivante :
EFAC->ADRF.VILLE
EFAC->ADRL.VILLE
Dans le descripteur de données, on mentionnera les informations suivantes dans la zone LIEN :
Pour la table EFAC :
C:ADR=ADRF au niveau du champ ADRF_IDENT
C:ADR=ADRL au niveau du champ ADRL_IDENT
Le code qui sera exécuté implicitement lors de l'évaluation de l'expression sera :
ConnecterComposant "ADR","ADRF"
ConnecterComposant "ADR","ADRL"
AppliquerMethodeComposantLecture "ADRF"."LECTURE" (EFAC.ADRF_IDENT)
AppliquerMethodeComposantLecture "ADRL"."LECTURE" (EFAC.ADRL_IDENT)
Le résultat obtenu est lu dans: I_ADRL.VILLE et dans I_ADRF.VILLE
/p>
Cas non composant
Le cas non composant s'exécute comme le cas composant mais avec les différences suivantes : Le lien C: est remplacé par R: et, à l'exécution, les résultats ne sont plus dans les structures d'interface.
A l'utilisation, on notera l'expression suivante :
EFAC->ADRF.VILLE
EFAC->ADRL.VILLE
Dans le Descripteur de Données, on mentionnera les informations suivantes dans la zone LIEN :
Pour la table EFAC :
R:ADR=ADRF au niveau du champ ADRF_IDENT
R:ADR=ADRL au niveau du champ ADRL_IDENT :
Le code qui sera exécuté implicitement lors de l'évaluation de l'expression sera :
Création d'un contexte de table ADRF pour ADR
Création d'un contexte de table ADRL pour ADR
Lire ADRF.IDENT,EgalA,EFAC.ADRF_IDENT
Lire ADRL.IDENT,EgalA,EFAC.ADRL_IDENT
Le résultat obtenu est lu dans: ADRL.VILLE et dans ADRF.VILLE
Cas d'un lien exprimé par une sous-chaîne
Cas composant :
Le cas présent exprime la liaison entre deux composants avec extraction d'une partie d'un champ.
On veut obtenir le champ PHT (prix total HT) de la facture à partir d'une ligne de facture. LFAC est la table des lignes de facture. EFAC est le composant facture (plus précisement, c'est l'interface entete du composant facture).
La table LFAC contient un champ NUMERO constitué pour partie de l'IDENT de l'entête (8 premiers caractères) et pour autre partie du numéro de ligne.
Dans ce cas, pour obtenir l'entête de facture à partir de la ligne, il faut extraire les 8 premiers caractères du champ NUMERO.
A l'utilisation, on notera l'expression suivante :
LFAC->EFAC.PHT
Dans le Descripteur de Données, on mentionnera les informations suivantes dans la zone LIEN :
Pour la table LFAC : C:EFAC(1,8) au niveau du champ NUMERO
Le code qui sera exécuté implicitement lors de l'évaluation de l'expression sera :
AppliquerMethodeComposantLecture"EFAC"."LECTURE"(Extrait(LFAC.NUMERO,1,8))
Le résultat obtenu est lu dans: I_EFAC.PHT
Remarque : Dans le cas particulier d'un contexte, on aura la syntaxe étendue suivante : C:EFAC(1,8)=EFACCTXT
Cas non composant :
Le cas non composant s'exécute comme dans le cas composant avec les différences suivantes : Le lien C: est remplacé par R: . Après l'exécution, le résultat n'est pas dans la structure d'interface.
A l'utilisation, on notera l'expression suivante :
LFAC->EFAC.PHT
Dans le Descripteur de Données, on mentionnera les informations suivantes dans la zone LIEN :
Pour la table EFAC : R:EFAC(1,8) au niveau du champ NUMERO
Le code qui sera exécuté implicitement lors de l'évaluation de l'expression sera :
Lire EFAC.IDENT, EgalA , Extrait(LFAC.NUMERO,1,8)
Le résultat obtenu est lu dans: EFAC.PHT