Skip to main content
Skip table of contents

Tableur dynamique-requête RCT de contrôle global


A quoi sert cette requête ?

Il s’est passé des choses dans le tableur pendant son utilisation: on a modifié, supprimé, ajouté du contenu… 🧐 La requête de contrôle global permet donc, en sortie de tableur, d’effectuer les mises à jour de données dans DIAPASON !

Cette requête est exécutée en sortie du tableur :

  • Validation directe (F1 ou Validation),

  • Sortie, puis validation (F4 ou croix, puis Validation),

  • Sortie, puis abandon (si « MAJ Abandon » est coché)

Comment fonctionne cette requête ?

Voyez plutôt !

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.

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-20240620-095953.png

  • En sortie du tableur, on parcourt donc 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.

  • En fonction de l’action qui a été effectuée sur la ligne, on vient ensuite effectuer les mises à jour adéquates (mises à jour de table par CREER TV, MAJ TV, INIT TV, ou bien ENR-ACT-ENT):

    • Si on a supprimé une ligne dans le tableur, ce qui se traduit par WfTabVal.EtatLig=CLO.”SUP”, on vient supprimer dans la table de valeurs l’enregistrement correspondant

    • Si on a modifié une ligne dans le tableur, ce qui se traduit par WfTabVal.EtatLig=CLO.”MOD”, on vient modifier l’enregistrement correspondant dans la table de valeurs

    • Si on a ajouté une ligne dans le tableur, ce qui se traduit par WfTabVal.EtatLig=CLO.”CRE”, on vient ajouter dans la table de valeurs l’enregistrement correspondant

DIAPASON a un nombre maximum d’enregistrements qui peuvent être modifiés en sortie de tableur. S’il atteint cette limite, il va annuler toutes les modifications qu’il a déjà effectuées, car il risque de ne pas être capable d’assumer les modifications suivantes. Cette limite est fixée par les administrateurs dans le paramètre -L défini sur chacune des bases de données Diapason.

Lors de la validation d’un Tableur Dynamique, il est possible d’en éditer le contenu. Pour cela vous devez utiliser la fonction « EXE-DOC » avec le document « ISTableur » dans la requête RCT de validation :

Erreur en sortie du tableur dynamique : que fait-on des données déjà mises à jour ?

Si on rencontre une erreur en sortie du tableur ( avec le mot-clé LC-ERREUR dans la RCT de contrôle global ), que souhaite-on que DIAPASON fasse ?

  • on annule toutes les modifications déjà effectuées (enregistrement proprement dit, alimentation Tables de Valeurs, utilisation ENR-ACT-ENT, etc.) ?

  • on garde les mises a jour déjà réalisées mais on arrête les mises à jour dès qu’on rencontre l’erreur ?

➡️ Si on coche “Intégrité MAJ” sur la fiche de définition du tableur, s’il y a une erreur dans cette requête (alimentation du mot clé LC-ERREUR) en sortie du tableur, DIAPASON annulera toutes les mises à jour de la base de données réalisées lors de la validation.

image-20240722-135438.png

JavaScript errors detected

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

If this problem persists, please contact our support.