Saviez-vous que vous pouvez récupérer des informations très détaillées sur une table, un champ, des index, une relation ou même sur la structure complète de la base de données? Ce type d’information est toujours très utile à des fins d’analyse ou d’introspection. Bien sûr, vous pouvez utiliser les commandes dépréciées de 4D Pack : _AP Get field infos et _AP Get table info. Une autre option consiste à utiliser le site SQL system tables.
Aucune d’entre elles ne vous permet de récupérer toutes les informations. Alors pourquoi utiliser un plug-in ou SQL alors que vous pourriez utiliser une commande 4D ? La commande EXPORT STRUCTURE renvoie la définition complète de la structure de la base de données dans un arbre XML. Cette commande existe depuis 4D v14 R4.
Par exemple, avec cette commande, vous pouvez savoir :
- si une table est journalisée,
- si un champ est une clé primaire,
- si un déclencheur est associé à un champ,
- si une table ou un champ sont exposés dans 4D Mobile Service.
Nous vous fournissons trois méthodes pour analyser l’arbre XML et pour enregistrer le résultat dans une variable Objet. Ensuite, vous pouvez manipuler cet objet avec les commandes d’objets 4D pour analyser, afficher ou faire toute autre action que vous souhaitez sur une table, un champ, un index ou une relation.
Le code source de chaque méthode ainsi que l’exemple complet de la base de données (version 4D v16) sont disponibles :
N’hésitez pas à importer ces commandes dans votre base de données, elles sont prêtes à être utilisées !
Informations sur les tables et les champs
La méthode getTablesAndFields analyse l’arbre XML et récupère les informations sur les tables et les champs. Le résultat est stocké dans une variable Object. Il s’agit d’un extrait d’un objet au format JSON qui contient les informations sur la table « Table_1« et un des champs nommés « ID » :
{ "id": "1", "leave_tag_on_delete": "true", "name": "Table_1", "uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12", "trigger_insert": "true", "comment": "Comments on my Table_1", "displayable_fields_count": "14", "color": {"alpha":"0","blue":"255","green":"255","red": "255"}, "coordinates": {"height":"355","left":"62","top":"70", "width":"152"}, "Field": [ { "autosequence": "true", "id": "1", "name": "ID", "not_null": "true", "type": "4", "unique": "true", "uuid": "1DC7531F29684D699D9FE9686AB71009", "index_ref": [ { "uuid": "7260EA8E18A1477A90F068F70754C384" } ], "pk": "true" } , {...} ] }
Informations sur les index
La méthode getIndex analyse l’arbre XML et récupère les informations de l’index. Le résultat est stocké dans une variable Object. Il s’agit d’un extrait d’un objet au format JSON ; vous pouvez voir les informations sur l’index « Index Name » du champ « [Table_1]Champ_Alp » :
{ "kind": "regular", "name": "Index Name", "type": "7", "uuid": "42E921F874EF44B4A2A08AD82CA53D91", "field": [ { "name": "Champ_Alp", "uuid": "BC7FE443CAC344F993655D4EDE731D87", "table_name": "Table_1", "table_uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12" } ] }
Informations sur les relations
La méthode getRelations analyse l’arbre XML et récupère les informations de la relation. Le résultat est également stocké dans une variable Object. Il s’agit d’un extrait de l’information sur la relation entre « [Table_1]ID » et « [Table_2]ID » au format JSON :
{ "auto_load_1toN": "false", "auto_load_Nto1": "true", "name_1toN": "Link_1_return", "name_Nto1": "Link_1", "uuid": "370180DABD8545D690CDC79E15D31215", "choice_field": "0", "entry_autofill": "false", "entry_create": "false", "entry_wildchar": "false", "color": {"alpha":"0","blue":"255","green":"255","red":"255"}, "related_field": [ { "kind": "source", "name": "ID", "uuid": "1DC7531F29684D699D9FE9686AB71009", "table_name": "Table_1", "table_uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12" } , { "kind": "destination", "name": "ID", "uuid": "B71D191358954A5783210E2447CD1A27", "table_name": "Table_2", "table_uuid": "6E23C70A973743B28809D9C3F3CC9060" } ] }
Remplacer les commandes obsolètes de 4D Pack
Vous pouvez également utiliser la commande EXPORT STRUCTURE pour remplacer les commandes dépréciées du Pack 4D. Nous vous fournissons deux méthodes 4D qui ont été implémentées afin de répondre comme les méthodes _AP Get field infos et _AP Get table info pour répondre aux commandes :
- Get table info: récupère des informations sur une table
- Get field info: récupère des informations sur un champ