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 !
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 ?
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 l’erreur se lance, l’utilisateur reviendra sur le tableur, il ne pourra pas en sortir ! |
Un exemple ?
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.