4D v14.3

Lire cle sous enregistrement

Accueil

 
4D v14.3
Lire cle sous enregistrement

Lire cle sous enregistrement 


 

Lire cle sous enregistrement ( champID ) -> Entier long 
Paramètre Type   Description
champID  Champ in Champ de type "Lien sous-table" ou de type "Entier long" d’une ancienne relation sous-table
Entier long  Entier long in Clé interne du lien

La commande Lire cle sous enregistrement est destinée à faciliter la migration du code 4D utilisant des sous-tables converties vers le code standard de manipulation des tables.

Rappel : Les sous-tables ne sont plus prises en charge à compter de la version 11 de 4D. Lors de la conversion d’une ancienne base, les sous-tables existantes sont automatiquement transformées en tables standard reliées aux tables d’origine par un lien automatique. La sous-table devient une table “N” et la table d’origine la table “1”. Dans la table 1, l’ex-champ de type sous-table est transformé en champ spécial de type “Lien sous-table” et dans la table N, un champ spécial, également de type “Lien sous-table” est ajouté. Il est nommé “id_added_by_converter”. 

Ce principe permet de préserver le fonctionnement des bases de données converties, mais il est fortement conseillé de remplacer les mécanismes des sous-tables par ceux des tables standard. 

La première étape de ce processus consiste à supprimer le lien automatique spécial, ce qui désactive définitivement les mécanismes hérités des sous-tables. Cette opération nécessite ensuite de réécrire le code associé. La commande Lire cle sous enregistrement accompagne cette réécriture en renvoyant l’identifiant interne utilisé par le lien. Elle permet de s’affranchir du lien et donc de travailler avec la sélection de l’ancienne sous-table, que le lien soit présent ou non. 

Examinons par exemple la structure (convertie) suivante :

Dans 4D, le code suivant continue de fonctionner mais il doit être mis à jour :

 TOUS LES SOUS ENREGISTREMENTS([Employés]Enfants)
 $total:=Sous enregistrements trouves([Employés]Enfants)
 vPrenoms:=""
 Boucle($i;1;$total)
    vPrenoms:=vPrenoms+[Employés]Enfants'Prénom+" "
    SOUS ENREGISTREMENT SUIVANT([Employés]Enfants)
 Fin de boucle

Vous pouvez désormais remplacer ce code par :

 CHERCHER([Employés_Enfants];[Employés_Enfants]id_added_by_converter=Lire cle sous enregistrement([Employés]Enfants))
 $total:=Enregistrements trouves([Employés_Enfants])
 vPrenoms:=""
 Boucle($i;1;$total)
    vPrenoms:=vPrenoms+[Employés_Enfants]Prénom+" "
    ENREGISTREMENT SUIVANT(Employés_Enfants)
 Fin de boucle

Note : S’il n’y a pas d’enregistrement courant chargé au moment de son exécution, Lire cle sous enregistrement retourne 0.

Le second code présente le double avantage d’utiliser des commandes standard de 4D et de fonctionner de manière identique, que le lien soit présent ou non. Lorsque vous supprimerez le lien, la commande retournera simplement la valeur clé stockée dans le champ Entier long. 

La commande accepte dans le paramètre champ_ID soit un champ de type Lien sous-table (lien existant) soit de type Entier long (lien supprimé). Dans tous les autres cas, une erreur est générée.

Ce principe permet d’écrire du code de transition. Lors de la dernière étape de la mise à niveau de l’application, vous pourrez supprimer les appels à cette commande.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Sous-enregistrements
Numéro : 1137
Nom intl. : Get subrecord key

 
HISTORIQUE 

Créé : 4D v12.1

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v12.4)
4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v13.5)
4D - Langage ( 4D v14.3)

Parent de : Lire cle sous enregistrement ( 4D v14 R3)