0

6 La navigation dans le manuel de Kentika est réservée aux utilisateurs identifiés



Manipuler les données d'un enregistrement chargé en mémoire en mode expert

Manipuler les données d'un enregistrement en mode expert

Préambule

Les informations ci-dessous s'adressent exclusivement aux utilisateurs ayant une très bonne connaissance de la manipulation des tableaux dans le langage 4D et de la manipulation des données Kentika.

Contexte d'utilisation

Lors du chargement d'un enregistrement en vue d'une mise à jour de ses données grâce à la fonction Record_Load, un certain nombre de tableaux sont créés en mémoire. Ces derniers comportent la description de la structure de l'enregistrement ainsi que les données.

Lors de l'enregistrement, les informations contenues dans les tableaux sont reventilées dans les enregistrements physiques de la base de données 4D et les index sont remis à jour. C'est pourquoi il est impératif de toujours utiliser ces fonctions sur les tables "Document" ; "Auteur" ; "Référence" ; "Personne" et "Revue" pour les données de la fiche signalétique (les données de gestion ne font pas l'objet du même mécanisme).

Variables et tableaux

Variable d'identification de l'enregistrement

  • LForm_Record_num : numéro d'enregistrement
  • eList_FileNum : numéro de table (deux derniers caractères du numéro d'enregistrement)
  • AForm_Record_Type : type (ne tient pas compte de la langue)
  • AForm_Record_Type_Lib : type dans la langue de l'utilisateur
  • AForm_Record_Site : code du site
  • EForm_Record_Filtre : numéro de requête correspondant au filtre de saisie éventuelle

Tableau de structure

Après l'exécution de Record_Load , que ce soit pour créer un nouvel enregistrement ou pour mettre à jour un enregistrement existant, les tableaux de description de structure suivants sont alimentés :

  • ETForm_numField : numéro des rubriques, tels qu'identifiées en structure
  • TTForm_Lib : intitulé de la rubrique (dans la langue de l'utilisateur)
  • TTForm_Att : attributs

L'attribut est une chaîne de 7 caractères suivi d'informations complémentaires optionnelles exprimées en mode xml (def : valeur par défaut ; UseTable : rubrique code utilisant les valeurs d'une autre table ; etiq : étiquette de la rubrique...)

Caractère Contenu

1 : nature 1 à 9 (1=code, 2=thesaurus, 3=format libre, 4=date

5=nombre, 6=email, 7=URL, 8=lien, 9=adresse)

2 : obligatoire 0 ou 1

3 : multiple 0 ou 1

4 : visu 0 ou 1 (0 dans le cas où l'utilisateur n'a pas le droit de voir la rubrique)

5 : index 0 ou 1

6 : alerte 0 ou 1 (1 si une modification doit provoquer un log de type 3 vs 2 en cas de modification)

7 : code ordre 0, 1 ou 2 rubrique seule, tête de groupe, dépendant d'une autre

Exemple : "4101100" correspond à une rubrique date (4) obligatoire (1) mono valuée (0) visible (1) indexée (1) pas d'alerte (0) rubrique seule (0)

Tableau des valeurs

Les valeurs sont contenues dans des tableaux à deux dimensions. La première dimension correspond à la rubrique, la deuxième aux valeurs. Si une rubrique n'est pas multi-valuée, le tableau correspondant aura toujours une et une seule valeur.

  • TTForm_Val_code : code des valeurs (dépend de la nature)
  • TTForm_Val_lib : libellé des valeurs

Contenu des valeurs en fonction de la nature de la rubrique

Suivant la nature, les tableaux indiqués ci-dessus auront des contenus différents.

Nature Contenu "TTForm_Val_Code" Contenu "TTForm_Val_lib"

1 (code) Code de la valeur Libellé de la valeur (dans la langue)

2 (thes) Record_Num (thesaurus) Descripteur

3 (valeur) Valeur

4 (date) Début\Fin Date telle que saisie

5 (nombre) Nombre Nombre saisi

6 (email) email

7 (URL) URL

8 (lien) Record_Num (table liée) Intitulé de l'enregistrement

9 (adresse) Adresse XML ADresse en text

Exemple

Le script suivant modifie le contenu de la rubrique langue (dont l'étiquette est LA et dont on ne connaît pas, a priori, le Field_Num) de l'enregistrement 40103. Si ce dernier contient la valeur "FR", la valeur est changée en"AN"

LForm_Record_Num:=40103

Record_Load (3;1;LForm_Record_Num)

Ce1:=Chercher dans tableau(TTForm_Att;"@<etiq>LA</etiq>@")

Si (Ce1>0)

Ce2:=Chercher dans tableau(TTForm_Val_code{Ce1};"FR")

Si (Ce2>0)

TTForm_Val_code{Ce1}{Ce2}:="AN"

Record_Save (LForm_Record_Num)

Fin de si

Fin de si