6 La navigation dans le manuel de Kentika est réservée aux utilisateurs identifiés
Manipuler des enregistrements par programmation
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.
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...
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.
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
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.
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.
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)
Thesaurus_Add (descripteur ; n° ou descripteur auquel le rattacher ; synonymes ; commentaire ; traduction)
Résultat : Record_Num du descripteur créé
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
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é
Powered by KENTIKA Atomic - © Kentika 2025 tous droits réservés - Mentions légales