Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/07191.jsonl.gz/867

Marche à suivre pour remplacer des champs de type « sous-table » par des sous-formulaires.
par Bernard Vuilleumier
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 :
- 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.
- 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.
- 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