Génération de la cinématique en mode accès SQL
Remarque : lorsque l'entité logique a un serveur logique par défaut, les instructions concernant l'entité sont affectées automatiquement au serveur logique.
Dans l'exemple ci-dessous, <S1> est le serveur logique par défaut de ENTITE1, et <S2> est le serveur logique par défaut de ENTITE2.
Structure type
* Pour la fenêtre DEBUT_STD_CIN INSERER_STD <S1> LIRE_SQL ENTITE1 *COND(E1_ZONE1 = :E1_VAR_HOTE1 ET .....) <S1> CODE_RET_SQL = *SQLCODE <S1> <S1> INSERER_STD ENTITE1 <S1> <S1> SI CODE_RET_SQL = 0 <S1> MAJ_SQL ENTITE1 *ALL *COND(E1_ZONE1 = :E1_VAR_HOTE1 ET ....) <S1> SINON <S1> SI CODE_RET_SQL = 100 <S1> CREER_SQL ENTITE1 <S1> FIN <S1> FIN FIN_STD_CIN * Pour une liste DEBUT_STD_CIN LECTURE_LST <fenêtre.objet:ppté_liste> *MODIF INSERER_STD <S2> LIRE_SQL ENTITE2 *COND(E2_ZONE1 = :E2_VAR_HOTE1 ET ....) <S2> CODE_RET_SQL = *SQLCODE <S2> <S2> INSERER_STD ENTITE2 <S2> <S2> SI CODE_RET_SQL = 0 <S2> MAJ_SQL ENTITE2 *ALL *COND(E2_ZONE1 = :E2_VAR_HOTE1 ET ....) <S2> SINON <S2> SI CODE_RET_SQL = 100 <S2> CREER_SQL ENTITE2 <S2> FIN <S2> FIN FIN_LECTURE_LST FIN_STD_CIN |
Les conditions des instructions LIRE_SQL et MAJ_SQL correspondent à des tests d'égalité, selon la règle suivante :
1. Pour une entité principale d'un chargement :
Si l'entité possède un identifiant, le test porte sur chacune des zones constituant l'identifiant ;
Si elle ne possède pas d'identifiant, le test porte sur la clé complète du premier index dont le chemin d'accès correspond aux accès spécifiés ;
Sinon, le test porte seulement sur les zones constituant le chemin d'accès spécifié.
2. Pour toute autre entité :
Si les accès spécifiés correspondent à l'identifiant de l'entité, le test porte sur les zones correspondant à la clé partielle de l'entité ;
Sinon, si les accès spécifiés correspondent à un index de l'entité, le test porte sur les zones correspondant à la clé partielle du premier index ;
Sinon, le test porte seulement sur les zones constituant le chemin d'accès spécifié.
Quant aux variables hôtes de la condition SQL, celles prises en compte sont :
La première zone écran en Entrée/Sortie (ou Sortie s'il s'agit de la mise à jour de liste) dont l'origine est la propriété logique définie dans l'accès de l'entité.
La première zone écran dont l'entité logique d'origine est différente de l'entité traitée, tout en ayant la même propriété conceptuelle d'origine.
La zone de l'entité constituant l'accès.
Cliquez ci-dessous pour plus d'informations sur :