4D v13.4Lire cle sous enregistrement |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v13.4
Lire cle sous enregistrement
|
Lire cle sous enregistrement ( champID ) -> Entier long | ||||||||
Paramètre | Type | Description | ||||||
champID | Champ |
![]() |
Champ de type "Lien sous-table" ou de type "Entier long" d’une ancienne relation sous-table | |||||
Entier long | Entier long |
![]() |
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 v12, 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.
Produit : 4D
Thème : Sous-enregistrements
Numéro :
1137
Nom intl. : Get subrecord key
Liste alphabétique des commandes
Créé : 4D v12.1