0

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



Méthodes de création et mise à jour d'enregistrements

Créer et modifier des enregistrements

Préambule

La création d'enregistrements par programmation nécessite de très bonnes connaissances sur la structure des données de l'application. Le logiciel effectue les mises à jour de toutes les données en en assurant l'intégrité et calcule tous les index. Par contre, il ne vérifie pas la validité de ce qui est saisi. Ainsi, il est possible de créer un document sans titre, même si cette rubrique a été déclarée "obligatoire". Il est donc de la responsabilité du programmeur de s'assurer de la pertinence de ce qui est écrit.

Description en mémoire

Lors du chargement d'un enregistrement en vue de sa modification ou lors de la préparation en mémoire d'un nouvel enregistrement, les variables et tableaux suivants sont alimentés :

Variable Type Contenu

Données d'entête

eList_FileNum entier Numéro de table

LForm_Record_num entier long Record_num

AForm_Record_Type alpha Type

AForm_Record_Site alpha Code du site d'appartenance

Rubriques

ETForm_numField tableau entier Numéros de rubriques

TTForm_Lib tableau texte Libellé des rubriques

TTForm_Att tableau texte Attributs

Valeurs

TTForm_Val_code tableau texte (2 dimensions) Code des valeurs

TTForm_Val_lib tableau texte (2 dimensions) Libellés des valeurs

Ces informations sont fournies à titre indicatif. A part les données d'en-tête, elles ne sont pas manipulées en direct par les programmes d'alimentation.

Méthode : Record_Load

Syntaxe

Record_Load ( table ; mode ; Record_Num ;"Type")

Contexte "création d'un enregistrement"

Paramètres Type Description

Table entier Numéro de la table

1 : personne

3 : document

6 : auteur

19 : reference

8 : revue

Mode entier 2

Record_Num entier 0

Type alpha Type d'enregistrement à créer

Site

Dans le cas d'une application en multi-site, la variable contenant le code du site d'appartenance doit être alimentée avant d'enregistrer les valeurs dans la base de données.

Exemple

AForm_Record_Site:="$1"

Record_Num

Le numéro d'enregistrement doit être alimenté grâce à la fonction x_GetRecordNum qui reçoit le numéro de table en paramètre. L'appel de cette fonction met à jour le paramètre "0_NR" qui contient le compteur générique de numéro d'enregistrement.

Contexte "modification d'un enregistrement"

Paramètres Type Description

Table entier Numéro de la table

1 : personne

3 : document

6 : auteur

19 : reference

8 : revue

Mode entier 1

Record_Num entier Numéro d'enregistrement

Les variables AForm_Record_Type et AForm_Record_Site prendront les valeurs trouvées sur la fiche chargée.

Méthode : Field_Set

Cette fonction est appelée pour mettre à jour les valeurs des rubriques de la fiche chargée lors du dernier appel à Record_Load.

Syntaxe

Field_Set ( "Rubrique" ; "code valeur" ; "libellé valeur" )

ou

Field_Set ( "Rubrique" ; "libellé valeur" )

Paramètres Type Description

Rubrique alpha Code ou étiquette de la rubrique

Code valeur texte Suivi la nature de la rubrique, cf. ci-dessous

Libellé valeur texte idem

Paramètre : rubrique

Ce paramètre peut contenir indifféremment : le signe égal suivi du numéro de rubrique, le numéro de la rubrique ou l'étiquette de la rubrique.

Paramètres : code / libellé valeur par nature

Code : code de la valeur (exemple : "FR" pour "Français"), le libellé peut être indiqué mais à titre indicatif uniquement. En effet, seul le code est stocké dans la base de données.

Exemple

Record_Load (3;1;2223103)

Field_Set ("LA";"FR")

Record_Save (2223103)

affecte la valeur "FR" (Français) à la rubrique dont l'étiquette est "LA" (Langue).

Thesaurus ou lien : le code doit contenir le Record_Num du descripteur ou de la table liée.

Exemple

Record_Load (3;1;2223103)

Select ("5";"";"Logiciel";"x9;a")

Field_Set ("=141";Chaine (Record_num (5));[Thesaurus]Descripteur)

Record_Save (2223103)

Recherche le descripteur intitulé "Logiciel" et l'affecte à la rubrique "141".

Format libre ou URL ou email : libellé de la valeur, le code est ignoré.

Date ou nombre : libellé de la valeur. Pour les dates, les bornes sont déterminées lors de l'enregistrement, pour les nombres, la valeur est transformée en numérique.

Exemple

Record_Load (3;2;0;"Ouvrage")

LForm_Record_num:=x_GetRecordNum (3)

Field_Set ("=21";"Voici le titre de mon nouvel ouvrage")

Field_Set ("=41";"2005-2007")

Record_Save (LForm_Record_num)

Crée un nouvel enregistrement en affectant le titre et "2005-2007" à la rubrique "date de parution".

Adresse : l'intervention se fait directement au niveau des éléments XML de l'adresse.

Exemple

Record_Load (1;1;72101)

TCom:=Field_Get ("=154";"val=code")

Si (x_GetParam ("Ville";"";TCom)="Paris 11")

x_SetParam ("CP";"75011";->TCom)

Field_Set ("=154";TCom)

Record_Save (72101)

Fin de si

Affecte le code postal "75011" si la ville est égale à "Paris 11"

Fonction : Field_Get

Cette fonction ne peut s'appliquer que dans le cadre d'un processus de mise à jour. Dans les autres cas, il faut utiliser la fonction Valeur_Rubrique.

Syntaxe

TCom:=Field_Get ( "code rubrique" ; "attribut" )

Paramètres Type Description

Rubrique alpha Code ou étiquette de la rubrique

Attribut texte Optionnel, valeurs possibles cf. ci-dessous

-> texte Valeur trouvée dans la rubrique en mémoire

Paramètre : Attributs

Attributs Commentaire

val=code Fournit les codes, les libellés sinon

val=RN Fournit les Record_Num, le libellé des fiches liées sinon

occ=nb Fournit le nombre d'occurrences d'une rubrique

occ=... Précise le n° occurrence pour lequel on demande la valeur

sep=... Séparateur entre les valeurs (valeur par défaut : " ; ")

indiquer ^p pour un retour, ^t pour une tabulation et ^s pour le signe ;

NB : plusieurs attributs peuvent être passés en paramètres, ils doivent être séparés entre eux par des ;

Exemple

Record_Load (3;1;2223103)

Ex:=Num (Field_Get ("141";"occ=nb"))

Si (Ex>0)

Boucle (Ce1;1;Ex)

Lx:=Num (Field_Get ("141";"val=RN;occ="+Chaine (Ce1)))

TCom:=Field_Get ("141";"occ="+Chaine (Ce1))

...

Fin de boucle

Fin de si

boucle sur les valeurs de la rubrique "141" (descripteur), pour chaque occurrence, le Record_Num est fourni dans la variable Lx et son intitulé dans la variable TCom.

Méthode : Record_Save

Syntaxe

Record_Save ( Record_Num )

Enregistre la fiche chargée à l'aide de Record_Load.

Attention : cette méthode ne crée pas l'enregistrement au log. Pour ce faire, vous devez utiliser la méthode AS_Log. De même, elle n'ajoute pas automatiquement l'enregistrement à l'ensemble des enregistrements autorisés. Pour provoquer un rafraichissement de ce dernier, vous devez appeler :"Folder_AUT_erase", pour que la fiche soit immédiatement accessible, vous devez l'adjoindre à l'ensemble des enregistrements autorisés.

Exemple

Record_Load (3;2;0;"Ouvrage")

LForm_Record_num:=x_GetRecordNum (3)

Field_Set ("=21";"Voici le titre de mon nouvel ouvrage")

Field_Set ("=41";"2005-2007")

Record_Save (LForm_Record_num)

AS_Log (3;1;"Ajout par script")

Folder_AUT_erase

ADJOINDRE ELEMENT ([Document];"<>EAutorize03")

NB : les contextes de création d'enregistrement peuvent être très variés. C'est pourquoi, il conviendra de considérer chaque cas de figure et tous les cas ne se verront pas forcément appliquées les mêmes règles.

Méthode : AR_Archive_File

Cette méthode permet de créer une nouvelle archive attachée à une fiche existante.

Syntaxe

Ex:=AR_Archive_File ( Record_Num ; n° archive ; Fichier ; nom ; commentaire)

Paramètres Type Description

Record_Num entier long si 0, prend le numéro de record de l'enregistrement courant

N° archive entier long si différent de 0 : met à jour l'archive, sinon, créé une nouvelle

Fichier texte Chemin d'accès au fichier à archiver

Nom texte (optionnel) Nom à donner à l'archive, sera le nom du fichier si absent

Commentaire texte (optionnel) Commentaire sur l'archive