Nouvelles commandes 4D Pack en 2004

Jamras KOMONCHAROENSIRI

De nouvelles commandes sont apparues dans 4D Pack 2004. Trois d'entre elles sont implémentées pour donner plus de flexibilité aux développeurs 4D en gérant la structure de la base (table, champs, relations et objets par défaut). Cette note technique aborde ces nouvelles commandes et donne quelques exemples sur la façon de les utiliser. ♪

- Titre : Nouvelles commandes 4D Pack en 2004

- Auteur : Jamras KOMONCHAROENSIRI

- Parution : 1 mai 2005

- Licence : Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. Résumé

- II. Commande AP Add table and fields (4D 2004)

- III. Commande AP Create relation (4D 2004.1)

- IV. Commande AP Get templates (4D 2004.1)

- V. Exemple d'utilisation des nouvelles commandes utilitaires 4D Pack

- Partie 1 : Base HR Manager

- Partie 2 : Base démo. NouvelleBase

- VI. Conclusion

- VII. Voir aussi

- VIII. Base exemple

I - Résumé

Par le passé, la structure d'une base ne pouvait être construite que manuellement à partir du mode structure. Si vous vouliez créer une table ou des champs, ou un lien, vous deviez ouvrir le Mode Structure et pas à pas créer une table, ajouter les champs, et tracer les liens entre les tables. Bien sûr ce n'était pas vraiment un problème, car c'était une partie de la phase de création. Mais vous pouviez aussi dupliquer une partie de la structure et la compléter.

Pour cela, le meilleur choix est 4D Insider. 4D Insider vous permet de copier les objets comme une table d'une base à une autre. Si vous souhaitez récupérer une structure autre que 4D, le seul choix possible était celui de le faire manuellement.

À partir de 4D 2004.1, vous pouvez créer une table et un lien par programmation grâce aux nouvelles commandes 4D Pack. Ces nouvelles commandes sont : AP Add Table and fields, AP Create relation. Une commande supplémentaire, AP Get templates permet de récupérer la liste des modèles de formulaires.

Examinons chacune de ces commandes pour avoir une meilleure idée de ce qu'elles peuvent apporter.

II - Commande AP Add table and fields (4D 2004)

La commande AP Add table and fields était initialement créée pour les utilisateurs du plug-in 4D ODBC Pro. Un bon exemple en est la base 4D Assimilator. Cette commande donne la possibilité de créer par programmation une table et ses champs à partir d'une source ODBC. Cette base vous est fournie à titre d'exemple.

Syntaxe :

1. AP Add table and fields (nomTable; tabNomsChamps; tabTypesChamps; tabLongChamps{; modèleListe{; modèleDétaillé}}) -> Entier long

Paramètre

Type

Description

nomTable

Chaîne

Nom de la table à créer

tabNomsChamps

Tab chaîne

Tableau de noms de champs

tabTypesChamps

Tab Entier long

Tableau de types de champs

tabLongChamps

Tab Entier long

Tableau de longueurs de champs alpha

(0 pour les champs non alpha)

modèleListe

Alpha

Modèle à utiliser pour le formulaire sortie courant

modèleDétaillé

Alpha

Modèle à utiliser pour le formulaire entrée courant

Résultat

Entier long

Numéro de la table créée

La commande crée autant de champs dans la table qu'il y a d'éléments dans le tableau tabNomChamps, tabTypeChamps et tabLongChamps. Les informations passées dans chaque élément sont utilisées pour créer les champs correspondants. Le premier élément de ces tableaux est utilisé pour le premier champ et ainsi de suite.

Si tout s'exécute correctement, la commande retourne le numéro de la table créée. Ce numéro, automatiquement assigné par 4D, correspond à la valeur retournée par l'expression Nombre de tables + 1.

Par exemple :

1. TABLEAU ALPHA(31;$tabNomsChamps;4)

3. TABLEAU ENTIER LONG($tabTypesChamps;4)

4. TABLEAU ENTIER LONG($tabLongChamps;4)

5. C_ENTIER LONG($NumTable)

7. $tabNomsChamps{1}:="IDSociété"

8. $tabNomsChamps{2}:="Nom"

9. $tabNomsChamps{3}:="Prénom"

10. $tabNomsChamps{4}:="Age"

12. $tabTypesChamps{1}:=Est un champ alpha

13. $tabTypesChamps{2}:=Est un champ alpha

14. $tabTypesChamps{3}:=Est un champ alpha

15. $tabTypesChamps{4}:=Est un entier long

17. $tabLongChamps{1}:=5

18. $tabLongChamps{2}:=20

19. $tabLongChamps{3}:=20

20. $tabLongChamps{4}:=0

22. $NumTable:=AP Add table and fields ("Contacts";$tabNomsChamps;$tabTypesChamps;$tabLongChamps)

Une nouvelle table nommée « Contacts » est alors créée :

La valeur retournée dans $NumTable sera le numéro de la table. Si la valeur retournée est 0, cela signifie qu'un ou plusieurs paramètres sont invalides.

Les deux derniers paramètres, modèleListe et modèleDétaillé sont optionnels. Ils peuvent être utilisés pour spécifier le modèle à utiliser pour construire les formulaires Entrée et Sortie.

La ligne de code suivante appliquera le modèle « XP » aux formulaires Entrée et Sortie :

1. $NumTable:=AP Add table and fields ("Contacts";$tabNomsChamps;$tabTypesChamps;$tabLongChamps;"XP";"XP")

Le nom du modèle spécifié doit faire partie de la liste des modèles proposée par l'assistant de création des formulaires :

Note : la commande supporte la création de tous les types de champs, excepté des sous-tables.

III - Commande AP Create relation (4D 2004.1)

La commande AP Create relation vous permet de créer un lien entre deux tables. L'exécution de la commande est équivalente au lien tracé au niveau de la structure.

Syntaxe :

1. AP Create relation (numTableSource; numChampSource; numTableDest; numChampDest) -> Entier long

Paramètre

Type

Description

numTableSource

Entier long

Numéro de la table de départ du lien

numChampSource

Entier long

Numéro du champ de départ du lien

numTableDest

Entier long

Numéro de la table d'arrivée du lien

numChampDest

Entier long

Numéro du champ d'arrivée du lien

Résultat

Entier long

Code d'erreur (0=pas d'erreur)

Dans numTableSource et numChampSource, passez le numéro de la table et du champ source, et dans numTableDest et numChampDest, passez le numéro de la table et du champ de destination.

Imaginons deux tables nommées [Contacts] et [Société]

La commande AP Create relation peut être utilisée pour établir une relation entre ces tables : [Société] est la table 1 (table n° 1, table de destination) et [Contacts] est la table N (table n° 2, table source). Pour créer la relation, la commande sera :

1. $erreur:=AP Create relation (2;1;1;1)

Le lien est créé avec les propriétés standards :

Lien aller :
- lien aller auto : décoché
- liste des enregistrements liés : décoché
- confirmation de création : coché

Lien retour :
- lien retour auto : décoché
- mise à jour auto dans les sous-formulaires : décoché

Les options du lien peuvent être contrôlées par programmation en utilisant les commandes 4D gérant les liens. Elles peuvent aussi être modifiées manuellement au niveau de la Structure.

IV - Commande AP Get templates (4D 2004.1)

Syntaxe :

1. AP Get templates (tabNomsModèles) -> Entier long

Paramètre

Type

Description

tabNomsModèles

Tableau alpha

Noms des modèles

Exemple :

1. C_ENTIER LONG($erreur)

3. TABLEAU ALPHA(255;tabNomsModèles;0)

5. $erreur:=AP Get templates (tabNomsModèles)

Basé sur la liste des modèles montrés dans l'image précédente, la commande AP Get templates récapitule dans un tableau les modèles :

Ces informations seront disponibles lorsque vous souhaiterez afficher la liste des modèles de formulaires dans la fenêtre Formulaire Utilisateur, où l'utilisateur pourra faire une sélection.

V - Exemple d'utilisation des nouvelles commandes utilitaires 4D Pack

Un autre moyen d'utiliser avantageusement les nouvelles commandes utilitaires 4D Pack est fourni avec cette note technique dans un formulaire de la base de démo « HR Manager ». La base de démonstration vous montre comment, par programmation, extraire la Structure d'une base et la recréer dans une nouvelle base. Elle se décline en deux parties :

Partie 1 : Base HR Manager

Cette base contient plusieurs tables et liens qui seront exportés dans un fichier XML. L'image ci-dessous est celle de la structure de la base :

Au démarrage de la base, une fenêtre apparaît avec l'image de la structure (telle que ci-dessus). Cliquez simplement sur le bouton « Export de la structure dans un fichier XML » et la structure de la base sera stockée dans le fichier « Structure.xml » dans le dossier de la base. Vous pouvez examiner ce fichier avec un éditeur xml ou texte. En voici un extrait :

Note : Les procédures utilisées pour l'export de la structure vers un fichier xml utilisent seulement les commandes 4D (pas celles de 4D Pack). Vous pouvez voir le code complet dans le dossier « XML export structure » (partie « Démarrage » de l'explorateur de la base de démo.).

Partie 2 : Base démo. NouvelleBase

Cette base contient un ensemble de procédures qui construisent la structure (avec 4D Pack), basée sur les informations contenues dans le fichier « Structure.xml ». En Mode Utilisation ou en Mode Structure, exécutez la méthode « cln_ImportStructure ».

Une fois que toutes les tables et les relations sont créées, la fenêtre de structure affichera toutes les tables en haut à gauche, ce qui est normal. Une fois les tables déplacées, vous devriez voir la structure de la première base exemple, avec en plus une [Table1] qui a été créée par défaut dans la nouvelle base. Les numéros des tables rajoutées ont donc été incrémentés de 1.

Note : les procédures qui concernent la création de la structure et l'analyse du document XML sont regroupées dans la partie Démarrage de l'Explorateur, dossier « XML Import structure ».

VI - Conclusion

Cette note technique vous a donné un aperçu des nouvelles commandes utilitaires de 4D Pack. Elle met en avant les capacités de ces commandes pour créer des tables et établir les relations entre elles, par programmation. Des bases exemples vous sont fournies pour permettre une meilleure compréhension de la manière d'utiliser ces nouvelles commandes.

VII - Voir aussi

Commandes 4D Pack :

https://4d.developpez.com/documentation/4DDoc2004/P6F/P6F00007.HTM

Commandes pour XML :

https://4d.developpez.com/documentation/4DDoc2004/V6F/V6F00067.HTM

VIII - Base exemple

Téléchargez la base exemple :

base exemple