Tableurs dynamiques- Requête(s) RCT de contrôle local
A quoi sert cette requête ?
Une fois que l’utilisateur a lancé le tableur, il va y effectuer différentes actions: demander de l’aide, lancer des actions sur le contenu du tableur, modifier le contenu… La requête RCT de contrôle local permet donc de :
Gérer la fonction d’aide par rapport aux colonnes,
Contraindre l'utilisateur dans ses saisies ( warning, erreur...)
Autoriser ou non la suppression, la modification du contenu des cellules
Initialiser une cellule à partir de la saisie d’une autre sur la même ligne,
Lancer un autre Tableur Dynamique, une PSD, une actions sur entité (GFD) ou un message de confirmation
On peut avoir une ou plusieurs requêtes RCT pour le tableur: une seule requête peut gérer tous les comportements, mais on peut également les séparer dans plusieurs requêtes.
La requête RCT est lancée à chaque modification de cellules alors qu’en création ou suppression de lignes elle ne sera exécutée qu’une fois au titre de la ligne.
Comment fonctionne cette requête ?
Voyez plutôt !
Comment écrire cette requête ?
DIAPASON repère où l’utilisateur est placé dans le tableur: il récupère la référence de la colonne et la valeur de la cellule. Par exemple, ici l’utilisateur est positionné sur la cellule encadrée : Et donc, la référence de la colonne VLO.VarZoneEnCours=”EmpRat” et la valeur de la cellule VLO.ValZoneEnCours=”1-MAG” | |
Ici, on vient déterminer ce qu’il se passe quand l’utilisateur effectue les actions suivantes:
➡️ Dans la requête, on traduit ça par SCR.RCT_TypeAction=”AID”. On va donc créer une liste d’aide ! Voir Créer une liste d'aide dans un tableur et Créer une liste d'aide à choix multiple dans un tableur
➡️ Dans la requête, on traduit ça par SCR.RCT_TypeAction=”MOD” Si on souhaite, on peut contrôler ce que l’utilisateur écrit ici, on initialiser le contenu d’une autre cellule en fonction de ce qu’il écrit.. Voir Initialiser la valeur d'une cellule dans le tableur ou Repositionner le curseur dans un tableur
➡️ Dans la requête, on traduit ça par SCR.RCT_TypeAction=”CRE” Souhaite-on effectuer des actions, vérifications, initialisations sur les données de la ligne créée ?
➡️ Dans la requête, on traduit ça par SCR.RCT_TypeAction=”MOD” | |
Dans ce bloc, on peut lancer des actions paramétrées depuis le tableur. Celles-ci seront disponibles au clic droit sur le tableur ! Les Actions permettent de lancer diverses opérations:
Voir Lancer une action depuis le tableur dynamique, Réactualiser le tableur Ces outils peuvent alors communiquer en entrée et en sortie avec le contenu des lignes du tableur "père". | |
On peut déterminer ici ce qu’il se passe en retour des actions lancées dans le tableur. | |
Ce mode permet d’effectuer des actions directement au lancement du tableur, avant même que l’utilisateur ait pu intervenir dans le tableur. Par exemple Mettre à jour des attributs d'une cellule |
Pour trouver le numéro d’une colonne il ne faut jamais entrer un numéro de colonne en dur, elle peut changer. On privilégiera donc:
Comment récupérer/modifier la valeur d’une cellule ?
En utilisant la liste WfTabVal
DIAPASON rassemble toutes les données du tableur en cours d’utilisation dans une liste standard WFTabVal. Cette liste est également utilisée dans les autres RCT du tableur ( RCT de sortie et RCT 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.
On va pouvoir utiliser cette liste pour aller rechercher ou modifier le contenu d’une autre cellule par les fonctions:
Init-Zone: Initialise la cellule pour les références de la colonne et de la ligne renseignées lorsque l’utilisateur saisit, crée ou modifie.
Rech-Zone: Recherche le contenu d’une zone en croisant la référence de la ligne et de la colonne.
En utilisant la fonction TAB-ACTION
La fonction TAB-ACTION: Offre les mêmes possibilités que Init-Zone et Rech-Zone, en plus d’autres fonctionnalités décrites dans le paragraphe dédié. La particularité du TAB-ACTION est de travailler avec le numéro de ligne et non pas une référence.
Quel contexte disponible dans cette requête ?
La RCT possède les mêmes fonctionnalités que les requêtes REB.
Des variables SCR sont initialisées à chaque exécution de la RCT pour retranscrire la situation du tableur :
RTD_TDY |
|
RCT_TypeAcces |
|
RCT_TypeAction |
|
RTD_TypeAcces |
|
RTD_ModeAcces |
|
RCT_ListeRefCol |
|
RCT_NumLig |
|
RCT_RefLig |
|
RCT_IndCol |
|
RCT_RefCol |
|
RCT_TypeSortie: Type de sortie |
|
RCT_ModeSortie: Mode de sortie (dans requête de sortie et contrôle global) |
|
Que peut-on faire dans cette requête ?
Mettre à jour des attributs d'une cellule
Créer une liste d'aide dans un tableur
Créer une liste d'aide à choix multiple dans un tableur
Initialiser la valeur d'une cellule dans le tableur
Repositionner le curseur dans un tableur
Lancer une action depuis le tableur dynamique
Ajouter un message de confirmation pour une action d’un Tableur Dynamique