0

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



Manipuler des enregistrements par programmation

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 DOCUMEN T(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'approfondir 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 : Auteur Nom 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érence Nom
  • 20 : Emprunt Emp/Res : Identifiant - Type objet : libellé objet (date)
  • 21 : Traduction Libellé 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 : Ressource Code
  • 31 : Mail Emetteur > Destinataire (Date) : Objet
  • 36 : Groupe Intitulé
  • 37 : Site Intitulé
  • 38 : Icones Nom
  • 39 : Parametre Code : Valeur