Champ de type « sous-table » et sous-formulaire

Comment utiliser un sous-formulaire pour remplacer un champ « sous-table »
mercredi 25 mars 2015
par  Bernard Vuilleumier
popularité : 4%

Les champs de type « sous-table » et les instructions associées sont obsolètes et doivent être remplacés par des tables et des sous-formulaires. Lors de la conversion d’une base, 4D crée des tables pour les champs « sous-tables ». Les champs des tables ainsi créées peuvent être utilisés dans un sous-formulaire. Mode d’emploi.

Conversion d’une base comportant des sous-tables

Lors de la conversion d’une base comportant des champs de type « sous-table », 4D crée des tables pour ceux-ci. Dans l’exemple suivant, la table FACTURES comportait un champ « lignes » de type « sous-table ». Après conversion, la structure se présente ainsi :

PNG - 39.3 ko
Table « LIGNES » créée lors de la conversion

Avant conversion, les lignes d’une facture étaient enregistrées dans la sous-table « lignes » qui était un champ de la table FACTURES. La conversion permettra d’enregistrer les lignes d’une facture dans la table LIGNES. Pour identifier à quelle facture appartient une ligne de cette table, il faut, lors de l’enregistrement d’un facture, associer un identifiant à chacune de ses lignes.

Sous-formulaire de la page de saisie des factures

Les lignes de la facture apparaissent dans un sous-formulaire placé dans la page de saisie des factures.

PNG - 13.1 ko
Sous-formulaire utilisant un formulaire saisissable en liste

Ce sous-formulaire a pour source la table LIGNES et utilise un formulaire saisissable en liste de cette table.

Code associé au formulaire saisissable en liste et au sous-formulaire

Le formulaire saisissable en liste comporte une méthode qui permet d’associer chaque ligne à la facture en cours de saisie. L’identifiant de la facture est affecté à l’identifiant de la ligne.

PNG - 48.8 ko
Méthode associée au formulaire saisissable en liste

L’identifiant de la facture est créé par une méthode associée au sous-formulaire. Cette méthode est exécutée lors du chargement.

Si (Nouvel enregistrement([FACTURES]))
[FACTURES]ID_Fact:=Numerotation automatique([FACTURES])
Fin de si

Commentaires