Skip to main content
Skip table of contents

Tableur dynamique-requête RCT de sortie


A quoi sert cette requête ?

Cette requête est lancée en sortie du tableur.

Cette requête permet de contrôler la cohérence des données avant validation ou abandon. S’il y a une erreur « LC-ERREUR » lors de l’exécution de la requête, cela empêche la validation ou l’abandon, et on reste dans le tableur !

Tableur_RCT Sortie.gif

Pourquoi on ne fait pas cette vérification dans la requête de contrôle global ?

La validation des tableurs dynamiques peut être effectuée en mode Batch. Il n’est dans ce cas pas possible de remonter a l’utilisateur un message d’erreur si un problème ou une incohérence est rencontrée dans la requête de contrôle global.

Comment fonctionne cette requête ?

Cette requête se base sur la liste WfTabVal

A la sortie du tableur, DIAPASON récupère toutes les données du tableur dans la liste WfTabVal. C’est ensuite à partir de cette liste qu’on réalise les mises à jour de Table de Valeurs et / ou les contrôles nécessaires en sortie du tableur. Le fonctionnement de la liste WfTabVal est expliqué dans la vidéo de la requête de Contrôle global !

Si vous vous rappelez bien, dans la requête REB de définition du tableur vous aviez crée une liste personnelle pour y mettre toutes les informations à mettre dans le tableur. Une fois dans le tableur, cette liste ne sert plus, car DIAPASON utilise sa propre liste standard WfTabVal, qui reprend toutes les données du tableur ainsi d’autres données utiles pour gérer cette liste (comme l'état de la ligne, si elle a été ajoutée, supprimée, modifiée..).

La requête RCT repose sur la liste WfTabVal contenant les variables suivantes, de type Caractère :

  • NumLig: Numéro de ligne dans le tableur. Cette zone n’est initialisée que si « Numérotation » est coché sur la définition du tableur dynamique.

  • RefLig: A une ligne du tableur correspond une ligne unique dans WfTabVal.

  • ContLig [500]: Contenu des n colonnes du tableur (n £ 500 pour DIAPASON graphique, n £ 100 pour DIAPASON caractère). Ce champ permet de récupérer la valeur des cellules du tableur. L’information récupérée est toujours de type « Caractère » ; il faudra éventuellement la convertir pour l’exploiter.

La valeur d’une cellule de type « Logique » sera récupérée sous la forme du caractère « + » pour « VRAI » ou « - » pour « FAUX ».

  • ResCtrl: Résultat du contrôle global : Si vide, pas de problème ; si « E », erreur ; si « W », warning.

  • LibResCtrl: Libellé de l’erreur ou du warning

  • EtatLig: Correspond à l’état actuel de la ligne en cours. Les différents états gérés sont : CRE, MOD ou SUP.

  • SelLig: Est égal à VRAI si la ligne est sélectionnée (en bleu, précédée du caractère « >> »). Pour des raisons d’optimisation, cette zone n’est maintenue que si le flag « Sél. Dans Req. » est à VRAI dans la définition de l’entête du tableur. Permet de savoir également quand on lance une action sur le tableur quelles lignes ont été sélectionnées.

Toutes ces variables sont automatiquement initialisées et mises à jour par le tableur. La requête RCT peut mettre à jour les variables ContPreCol, ContLig[500], ResCtrl, et LibResCtrl. Cependant,  pour conserver la correspondance entre le tableur et la requête RCT, il est fortement conseillé de ne pas modifier les variables EtatLig, SelLig et RefLig.

Comment écrire cette requête ?

image-20240924-135324.png

  • En sortie du tableur, on parcourt la liste WfTabVal pour venir récupérer toutes les valeurs des enregistrements du tableur, ainsi que les actions effectuées sur le tableur (création, modification, suppression de la ligne).

Pour parcourir la liste WfTabVal, on utilise la fonction Rech-Zone, qui vient découper la liste pour accéder à chaque information de l’enregistrement en cours.

Ce fonctionnement est expliqué ( et c’est le même) dans la vidéo sur la requête de contrôle global !

  • Si quelque chose dans le tableur n’est pas conforme, on peut lancer un LC-Erreur.

➡️ Si l’erreur se lance, l’utilisateur reviendra sur le tableur, il ne pourra pas en sortir !

Un exemple ?

image-20240924-135324.png

Prenons l’exemple d’un tableur ayant pour but d'effectuer une répartition en % sur différentes lignes.

La somme des % des différentes lignes doit être égale à 100%.

Ce contrôle ne peut pas être effectué lors de la saisie d’un % car l’utilisateur n’a pas encore effectué toutes ses saisies: il doit donc être effectué en sortie.

➡️ La requête de sortie permettra lors de la validation du tableur d’effectuer le contrôle, et de bloquer la validation si la somme des pourcentage est différente de 100%, en informant l’utilisateur du problème rencontré afin qu’il puisse le corriger et revalider à la suite son tableur.

Ce contrôle n’est pas exécuté lors de l’utilisation d’un tableur Excel.


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.