TProcessStatSource
| TProcessStatSource = class (TStatSource) | Interface de TProcessStatSource | Exemples de TProcessStatSource |
Classe permettant d'accéder aux données stockées lors des exécutions de processus.
Description
Les possibilités de sélections et de filtres sont les mêmes que dans les écrans d'extraction de suivis de processus.
Il est possible d'accéder :
- aux exécutions des processus simples
- aux exécutions des modes opératoires
Ces exécutions peuvent être retrouvées quelque soit leur état (Complet, Annulé, ...)
Les filtres sont additifs (NB : on ne gère que le AND, pas le OU).
Principes de fonctionnement (méthode 1)
// Définition des champs à récupérer
var selectedValues:=TStrings.Create;
selectedValues.Add('Saisie.NomUtilisateur');
// Définition des filtres
var filters:=TStrings.Create;
filters.Add('ExecutionNo=359');
// Extraction
var pss:=TProcessStatSource.CreateFromDocRUD('PRO0003'); // RUD du document dans lequel on veut récupérer les données
pss.Filters:=filters.CommaText;
pss.Open(selectedValues.CommaText);
while not pss.EOF do begin // Boucle sur toutes les exécutions retrouvées
PrintLn(VarToStr(pss.CurrentRowItem[0])); // Affichage de la valeur du premier champs dans la liste SelectedValues
pss.Next; // Passe à l'exécution suivante dans la liste des exécutions retrouvées
end;
Principes de fonctionnement (méthode 2, pseudo-SQL)
var pss:=TProcessStatSource.CreateFromDocRUD('PRO0003'); // RUD du document dans lequel on veut récupérer les données
pss.OpenSQL('select Saisie.NomUtilisateur ' // succession des champs séparés par des virgules
+'from PRO0003 ' // RUD
+'where ExecutionNo=359'); // succession de filtres séparés par AND
while not pss.EOF do begin
PrintLn(VarToStr(pss.CurrentRowItem[0])); // Récupération du premier champ
pss.Next;
end;
Récupération d'un ou plusieurs champs d'un processus simple pour une exécution donnée
Elle permet de récupérer une donnée ou plusieurs données particulières dans une exécution dont on connaît le numéro d'exécution.
C'est l'utilisation la plus courante de la classe TProcessStatSource : c'est le cas lors de l'exécution de sous-process lorsqu'on veut retrouver la valeur d'un champ saisi dans le processus père ou dans le processus fils.
Cf. Exemples
Utilisation de filtres plus complexes
On n'est pas limité au filtre sur le numéro d'exécution : tous les filtres utilisés dans les écrans d'extraction de suivis de processus peuvent être utilisés ici.
La liste des filtres possibles et leur signification est donnée dans le tableau des filtres
Récupération de données stockées dans des modes opératoires
A l'inverse de processus simples, les tâches des modes opératoires peuvent être exécutées plusieurs fois et chaque exécution est enregistrée.
Si on extrait une variable issue d'une tâche exécutée N fois ainsi qu'une variable issue d'une tâche exécutée M fois, le jeu de données résultant contiendra N x M lignes.
On peut forcer Qubes à récupérer uniquement la dernière valeur saisie pour chaque variable en utilisant la syntaxe pseudo-SQL définie ci-dessus en intercalant le mot-clé LAST entre SELECT et la liste des champs à récupérer.
Cas particulier des variables de type Liste
Si on extrait des variables simples et une variable contenant une liste avec N éléments, le jeu de données comportera N lignes : tous les champs simples seront répétés sur chaque ligne et la colonne de la variable Liste contiendra successivement chacun des N éléments de la liste.
Cela se complique si on souhaite extraire une Liste qui contient N éléments et une autre liste qui contient M éléments : on obtient un jeu de données avec N x M éléments.
On recommande donc de ne pas extraire plusieurs listes dans la même extraction.
Une bonne pratique est de prévoir à la conception du formulaire une variable de type Chaîne qui contient la liste au format CommaText.