Manuel

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_libtableau 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  

Rubriquealpha 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  

Rubriquealpha 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=codeFournit 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