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 :
AP Add table and fields (
nomTable;
tabNomsChamps;
tabTypesChamps;
tabLongChamps{;
modèleListe{;
modèleDétaillé}})
->
Ent
ier 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 :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
TABLEAU ALPHA(
31
;
$tabNomsChamps
;
4
)
TABLEAU ENTIER LONG
(
$tabTypesChamps
;
4
)
TABLEAU ENTIER LONG
(
$tabLongChamps
;
4
)
C_ENTIER LONG
(
$NumTable
)
$tabNomsChamps
{1
}:=
"IDSociété"
$tabNomsChamps
{2
}:=
"Nom"
$tabNomsChamps
{3
}:=
"Prénom"
$tabNomsChamps
{4
}:=
"Age"
$tabTypesChamps
{1
}:=
Est un champ alpha
$tabTypesChamps
{2
}:=
Est un champ alpha
$tabTypesChamps
{3
}:=
Est un champ alpha
$tabTypesChamps
{4
}:=
Est un entier long
$tabLongChamps
{1
}:=
5
$tabLongChamps
{2
}:=
20
$tabLongChamps
{3
}:=
20
$tabLongChamps
{4
}:=
0
$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 :
$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 :
AP Create relation (
numTableSource;
numChampSource;
numTableDest;
numChampDest)
->
Ent
ier 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 :
$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 :
AP Get templates (
tabNomsModèles)
->
Ent
ier long
Paramètre |
Type |
Description |
---|---|---|
tabNomsModèles |
Tableau alpha |
Noms des modèles |
Exemple :
2.
3.
4.
5.
C_ENTIER LONG
(
$erreur
)
TABLEAU ALPHA(
255
;
tabNomsModèles;
0
)
$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