Manuel

Manipuler des enregistrements

 

 

Préambule

 

Ce qui est décrit ci-après correspond aux tables utilisant le dictionnaire virtuel mis en place dans Préférences>Structure. Les autres tables (informations de gestion) utilisent des ordres 4D directement pour leur manipulation.

 

Vue d'ensemble

 

Rechercher et consulter des enregistrements

 

Select (table ; rubriques ; valeur ; opérateur) : effectue une recherche sur la table en cherchant la valeur dans les différentes rubriques et en tenant compte de l'opérateur de comparaison.

en savoir plus...

 

Table_sort (rubrique) : tri les enregistrements de la table courante suivant la rubrique indiquée en paramètre.

Pour tri descendant, ajouter la commande BSort_Des:=vrai avant l'appel à Table_Sort

 

Select_sel2tab (numéro de table ; pointeur vers tableau à alimenter) : charge le tableau des numéros d'enregistrements de la sélection de la table.

 

Goto_record (record_num) : rend l'enregistrement dont le numéro (record_num) est passé en paramètre.

 

Valeur_rubrique (rubrique ; attribut) : permet d'obtenir la valeur d'une rubrique de l'enregistrement courant de la table à laquelle la rubrique appartient avec une mise en forme spécifiée dans le paramètre attribut.

en savoir plus...

 

Notion de sélection

 

Avertissement aux programmeurs 4D : la notion de sélection telle que gérée par 4D ne peut être utilisée directement ici car certaines rubriques étant des rubriques récursives (rubrique d'une table pointant sur un enregistrement de la même table), les sélections 4D sont en permanence modifiées. Pour balayer le contenu d'une sélection, vous devez charger les numéros d'enregistrements dans un tableau puis balayer les valeurs de ce tableau.

 

Exemple : exporter une sélection de titres de documents

 

Le script dont le code est reproduit ci-dessous effectue les opérations suivantes :

Recherche les documents de type Article ou Ouvrage et ayant MAC dans le titre (Select)

Tri la table par ordre de titre croissant (Table_Sort)

Charge le tableau de sélection (Select_sel2tab)

Si des documents ont été trouvés (Taille tableau), propose à l'utilisateur de créer un nouveau document (Creer document)

Si l'utilisateur a créé ce document (OK=1), pour chaque enregistrement du tableau de sélection (Boucle), charge une variable  (TCom) contenant le titre du document  (Valeur_rubrique) et ajoute un retour à la ligne à la fin et écrit cette variable dans le document (Envoyer paquet).

Un beep (Beep) est émis à la fin pour indiquer que le traitement est terminé.

Si aucun document n'a été trouvé à l'issue de la première recherche, un message (Alerte) en avertit l'utilisateur.

 

Select("03(Article;ouvrage)";"=21";"MAC";"*;p")

Table_Sort("=21")

Select_sel2tab(3)

Si (Taille tableau(LTNumRecList)>0)

Hx:=Creer document("";"txt")

Si (OK=1)

Boucle (Ex;1;Taille tableau(LTNumRecList))

Goto_record(LTNumRecList{Ex})

TCom:=Valeur_rubrique("=21";"encode=W")

TCom:=TCom+Caractere(13)+Caractere(10)

ENVOYER PAQUET(Hx;TCom)

Fin de boucle

FERMER DOCUMENT(Hx)

BEEP

Fin de si

Sinon

BEEP

ALERTE("Aucun article ou ouvrage ne contient MAC dans le titre")

Fin de si

 

Mettre à jour des enregistrements

 

Avant de procéder à des affectations de valeurs dans des champs, il faut d'abord charger l'enregistrement en mémoire (attention : il ne peut y avoir, à un instant T, qu'un seul enregistrement chargé en mémoire). Ensuite, après avoir procédé aux affectations, on procède à son enregistrement définitif dans la base.

 

Record_Load (table ; mode ; record_num ; type) : charge le contenu et la description d'un enregistrement.

 

Field_Get (rubrique ; attribut) : lit la valeur d'une rubrique en tenant compte de l'attribut spécifié.

 

Field_set (rubrique ; code valeur ; libellé valeur ; code de la valeur à remplacer ; libellé de la valeur à remplacer) : modifie le contenu d'une rubrique.

 

Record_Save : enregistre dans la base de données les nouvelles valeurs.

 

Dans certains cas, il sera nécessaire d'approndir encore vos connaissances sur la manipulation des données en mode expert pour réaliser certaines mise à jour.

 

 

Exemple : créer une fiche document de type Ouvrage

 

Dans les scripts suivants, une nouvelle fiche document est préparée en mémoire avec le type Ouvrage (Record_Load), un numéro d'enregistrement lui est affecté (x_GetRecordNum), les rubriques titre et date de parution sont alimentées (Field_Set) et ensuite, l'enregistrement est stocké dans la base de données (Record_Save)

 

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";Chaîne(Date du jour))

Record_Save (LForm_Record_num)

 

 

Créer un descripteur par programmation

 

Thesaurus_Add (descripteur ; n° ou descripteur auquel le rattacher ; synonymes ; commentaire ; traduction)

Résultat : Record_Num du descripteur créé

 

 

Exemples

 

Le script suivant créera un nouveau descripteur attaché au descripteur dont le Record_Num est 758905, avec comme synonymes : Aide à domicile et Assistant domestique et comme note d'application : Services proposés à domicile.

 

Thesaurus_Add("Service à la personne";"758905";"Aide à domicile;Assistant domestique";"Services proposés à domicile")

 

Le script suivant créera un nouveau candidat-descripteur (ie : descripteur rattaché à Candidat) avec comme synonyme Volatile, comme note d'application : Animal à plumes et avec les traductions anglaise : Bird et Allemande : Vogel.

 

TAttributs:=""

x_SetParam ("Val_EN";"Bird";->TAttributs)

x_SetParam ("Val_DE";"Vogel";->TAttributs)

Thesaurus_Add ("Oiseau";"Candidat";"Volatile";"Animal à plumes";TAttributs)

 

NB : la traduction est un champ XML alimentée grâce à la fonction x_SetParam

 

Fonctions applicables aux enregistrements

 

Record_Aut (Record_num) : Permet de savoir quels sont les droits de l'utilisateur connecté sur l'enregistrement dont le Record_num est passé en paramètre, renvoie une valeur entière.

-1 = accès non autorisé ; 0 = consultation seulement ; 1 : modification autorisée ; 2 = suppression autorisée

 

Record_Delete (Record_Num) : Permet de supprimer un enregistrement en effaçant également les éventuels liens qui le rattachaient aux autres enregistrements, ainsi que les éventuelles images attachées. Cette opération est irréversible.

 

Record_Display (Record_Num) : Provoque l'affichage, dans l'application et dans une nouvelle fenêtre, de l'enregistrement.

 

Record_Locked (Record_Num) : Permet de vérifier si un enregistrement est verrouillé par un autre utilisateur ou un autre process ; renvoie une valeur booléenne : vrai si l'enregistrement est verrouillé, faux sinon. Si la fonction est appelée dans un contexte de serveur, la variable TMes contiendra l'intitulé "Cet enregistrement est verrouillé" ; sinon, une alerte est affichée à l'utilisateur.

 

NB : en maintenant la touche alt (ou option sur Mac), une information sur le process et la machine qui verrouillent l'enregistrement est ajoutée au message.

 

Record_Lib (Record_Num) : Permet d'obtenir l'intitulé d'un enregistrement

Record_Lib (Record_Num ; "*") : idem, avec le nom de la table en début (exemple : "Document : Le Rouge et le Noir")

Record_Lib (Record_Num ; "**") : idem, avec le type de l'enregistrement en début (exemple : "Ouvrage : Le Rouge et le Noir")

 

NB : à la place de Record_Num, on peut passer le numéro de la table. Dans ce cas, c'est l'enregistrement courant qui sera pris en compte.

 

NB : cette fonction tient compte de la langue choisie par l'utilisateur.

 

Table       Contenu de l'intitulé

1 : Personne   Nom Prénom (genre)

2 : Requête     Intitulé de la Requête

3 : Document   Titre

4 : Rubrique    Libellé de la rubrique

5 : Thesaurus  Descripteur

6 : AuteurNom de l'auteur

8 : Revue Nom de la revue

11 : Type objet Intitulé du type d'objet

13 : Maquette  Nom de la maquette

14 : Service     Nom

15 : Fournisseur      Nom

16 : Commande       Numero (date de commande) - Fournnisseur

17 : Ligne de commande Numéro de commande (n° de ligne) Titre

19 : RéférenceNom

20 : Emprunt   Emp/Res : Identifiant - Type objet : libellé objet (date)

21 : TraductionLibellé utilisé

22 : Image       (Record_Num - N° archive) Nom

24 : KV    Titre (ou title suivant le paramétrage)

25 : Rubrique_Valeur      Libellé (ou code si "c" passé en 2ème paramètre)

27 : Stat-Emprunt    (idem emprunt)

28 : RessourceCode

31 : Mail  Emetteur > Destinataire (Date) : Objet

36 : Groupe     Intitulé

37 : Site  Intitulé

38 : Icones      Nom

39 : ParametreCode : Valeur