TProcessStatSource - Exemples
| TProcessStatSource = class (TStatSource) | Interface de TProcessStatSource | Exemples de TProcessStatSource |
Les exemples ci-dessous montrent :
- une récupération de données avec des filtres avancés et stockage dans une DataGrid
- une récupération de données avec pseudo-SQL et stockage dans une DataGrid
- une récupération de données avec pseudo-SQL et stockage dans une DataGrid dans le cas d'un mode opératoire (utiliser le mot clé LAST dans la requête)
- des exemples de fonctions pour récupérer des données dans un processus connaissant son numéro d'exécution (utilisables classiquement quand on est dans un processus père et qu'on veut récupérer des données d'un processus enfant).
uses DataGrid, QuBESStatSource;
// Définition des filtres
var filters:=TStrings.Create;
filters.Add('Status=Complet');
filters.Add('DateLancement>='+DateTimeToStr(Now-30));
filters.Add('DateLancement<'+DateTimeToStr(Now-1));
// Définition des champs à récupérer
var selectedValues:=TStrings.Create;
selectedValues.Add('Variables.Palette');
selectedValues.Add('Variables.Lot');
selectedValues.Add('Variables.Quantite');
selectedValues.Add('LancePar');
// Recherche et stockage dans une DataGrid
var dg:=TDataGrid.Create;
dg.AddColumn('Palette', cssText);
dg.AddColumn('Lot', cssText);
dg.AddColumn('Quantite', cssNumeric);
dg.AddColumn('Responsable', cssText);
var pss:=TProcessStatSource.CreateFromDocRUD('PRO011'); // RUD du document dans lequel on veut récupérer les données
pss.Filters:=filters.CommaText;
pss.Open(selectedValues.CommaText);//SQL('select from RUD where ');
while not pss.EOF do begin // Boucle sur toutes les exécutions retrouvées
dg.Append;
for var i:=0 to selectedValues.Count-1 do
dg.CellData[i]:=VarToStr(pss.CurrentRowItem[i]);
pss.Next; // Passe à l'exécution suivante dans la liste des exécutions retrouvées
end;
PrintLn(dg.AsCSV);
// Définition des filtres
var filters:=TStrings.Create;
filters.Add('Status=Complet');
filters.Add('DateLancement>='+DateTimeToStr(Now-30));
filters.Add('DateLancement<'+DateTimeToStr(Now-1));
// Définition des champs à récupérer
var selectedValues:=TStrings.Create;
selectedValues.Add('Variables.Palette');
selectedValues.Add('Variables.Lot');
selectedValues.Add('Variables.Quantite');
selectedValues.Add('LancePar');
// Recherche et stockage dans une DataGrid
var dg:=TDataGrid.Create;
dg.AddColumn('Palette', cssText);
dg.AddColumn('Lot', cssText);
dg.AddColumn('Quantite', cssNumeric);
dg.AddColumn('Responsable', cssText);
var pss:=TProcessStatSource.CreateFromDocRUD('PRO011'); // RUD du document dans lequel on veut récupérer les données
pss.Filters:=filters.CommaText;
pss.Open(selectedValues.CommaText);//SQL('select from RUD where ');
while not pss.EOF do begin // Boucle sur toutes les exécutions retrouvées
dg.Append;
for var i:=0 to selectedValues.Count-1 do
dg.CellData[i]:=VarToStr(pss.CurrentRowItem[i]);
pss.Next; // Passe à l'exécution suivante dans la liste des exécutions retrouvées
end;
PrintLn(dg.AsCSV);
uses DataGrid, QuBESStatSource;
var dg:=TDataGrid.Create;
dg.AddColumn('Palette', cssText);
dg.AddColumn('Lot', cssText);
dg.AddColumn('Quantite', cssNumeric);
dg.AddColumn('Responsable', cssText);
var pss:=TProcessStatSource.CreateFromDocRUD('PRO011'); // RUD du document dans lequel on veut récupérer les données
pss.OpenSQL(#'select Variables.Palette, Variables.Lot, Variables.Quantite, LancePar
from PRO011
where Status=Complet and DateLancement>='+DateTimeToStr(Now-30));
while not pss.EOF do begin
dg.Append;
dg.CellData[0]:=pss.CurrentRowItem[0];
dg.CellData[1]:=pss.CurrentRowItem[1];
dg.CellData[2]:=pss.CurrentRowItem[2];
dg.CellData[3]:=pss.CurrentRowItem[3];
pss.Next;
end;
PrintLn(dg.AsCSV);
var dg:=TDataGrid.Create;
dg.AddColumn('Palette', cssText);
dg.AddColumn('Lot', cssText);
dg.AddColumn('Quantite', cssNumeric);
dg.AddColumn('Responsable', cssText);
var pss:=TProcessStatSource.CreateFromDocRUD('PRO011'); // RUD du document dans lequel on veut récupérer les données
pss.OpenSQL(#'select Variables.Palette, Variables.Lot, Variables.Quantite, LancePar
from PRO011
where Status=Complet and DateLancement>='+DateTimeToStr(Now-30));
while not pss.EOF do begin
dg.Append;
dg.CellData[0]:=pss.CurrentRowItem[0];
dg.CellData[1]:=pss.CurrentRowItem[1];
dg.CellData[2]:=pss.CurrentRowItem[2];
dg.CellData[3]:=pss.CurrentRowItem[3];
pss.Next;
end;
PrintLn(dg.AsCSV);
uses DataGrid, QuBESStatSource;
var dg:=TDataGrid.Create;
dg.AddColumn('Palette', cssText);
dg.AddColumn('Lot', cssText);
dg.AddColumn('Quantite', cssNumeric);
dg.AddColumn('Responsable', cssText);
var pss:=TProcessStatSource.CreateFromDocRUD('PEQ001'); // RUD du document dans lequel on veut récupérer les données
pss.OpenSQL(#'select Last Variables.Palette, Variables.Lot, Variables.Quantite, LancePar
from PEQ001
where Status=Complet and DateLancement>='+DateTimeToStr(Now-30));
while not pss.EOF do begin
dg.Append;
dg.CellData[0]:=pss.CurrentRowItem[0];
dg.CellData[1]:=pss.CurrentRowItem[1];
dg.CellData[2]:=pss.CurrentRowItem[2];
dg.CellData[3]:=pss.CurrentRowItem[3];
pss.Next;
end;
PrintLn(dg.AsCSV);
var dg:=TDataGrid.Create;
dg.AddColumn('Palette', cssText);
dg.AddColumn('Lot', cssText);
dg.AddColumn('Quantite', cssNumeric);
dg.AddColumn('Responsable', cssText);
var pss:=TProcessStatSource.CreateFromDocRUD('PEQ001'); // RUD du document dans lequel on veut récupérer les données
pss.OpenSQL(#'select Last Variables.Palette, Variables.Lot, Variables.Quantite, LancePar
from PEQ001
where Status=Complet and DateLancement>='+DateTimeToStr(Now-30));
while not pss.EOF do begin
dg.Append;
dg.CellData[0]:=pss.CurrentRowItem[0];
dg.CellData[1]:=pss.CurrentRowItem[1];
dg.CellData[2]:=pss.CurrentRowItem[2];
dg.CellData[3]:=pss.CurrentRowItem[3];
pss.Next;
end;
PrintLn(dg.AsCSV);
uses QuBESStatSource;
// -- Exemple de fonction qui retourne une variable de type chaîne extraite d'une exécution de processus. --
// variableName : Nom complet de la variable dans le processus (ex : 'Variables.ValidationAction')
// processDocRUD : Référence du document décrivant le processus (ex : 'PROCESS-0009')
// executionNo : Référence de l'exécution dans laquelle cette fonction va extraire la valeur de la variable.
function ReadFormularVarAsString(variableName: String; processDocRUD: String; executionNo: Integer): String;
var
pst: TProcessStatSource;
begin
pst:=TProcessStatSource.CreateFromDocRUD(processDocRUD);
pst.Filters:='ExecutionNo='+IntToStr(executionNo);
pst.Open(variableName);
if not pst.EOF then
Result:=pst.CurrentRowItem[0];
end;
// -- Exemple de fonction qui retourne une liste de variables de type chaîne extraites d'une exécution de processus.--
// variableNames : Objet de type TStrings contenant la liste des noms complets de chaque variable dans le processus (ex : 'Variables.ValidationAction')
// processDocRUD : Référence du document décrivant le processus (ex : 'PROCESS-0009')
// executionNo : Référence de l'exécution dans laquelle cette fonction va extraire la valeur de la variable.
// destList : Objet de type TStrings destiné à recevoir la liste des valeurs extraites pour chaque variable donnée (l'ordre est conservé).
procedure ReadFormularVarsAsString(variableNames: TStrings; processDocRUD: String; executionNo: Integer; destList: TStrings);
var
pst: TProcessStatSource;
i: Integer;
begin
destList.Clear;
pst:=TProcessStatSource.CreateFromDocRUD(processDocRUD);
pst.Filters:='ExecutionNo='+IntToStr(executionNo);
pst.Open(variableNames.CommaText);
if not pst.EOF then begin
for i:=0 to variableNames.Count-1 do
destList.Add(pst.CurrentRowItem[i]);
end else begin
for i:=0 to variableNames.Count-1 do
destList.Add('');
end;
end;
// -- Exemple de fonction qui retourne une variable de type chaîne extraite d'une exécution de processus. --
// variableName : Nom complet de la variable dans le processus (ex : 'Variables.ValidationAction')
// processDocRUD : Référence du document décrivant le processus (ex : 'PROCESS-0009')
// executionNo : Référence de l'exécution dans laquelle cette fonction va extraire la valeur de la variable.
function ReadFormularVarAsString(variableName: String; processDocRUD: String; executionNo: Integer): String;
var
pst: TProcessStatSource;
begin
pst:=TProcessStatSource.CreateFromDocRUD(processDocRUD);
pst.Filters:='ExecutionNo='+IntToStr(executionNo);
pst.Open(variableName);
if not pst.EOF then
Result:=pst.CurrentRowItem[0];
end;
// -- Exemple de fonction qui retourne une liste de variables de type chaîne extraites d'une exécution de processus.--
// variableNames : Objet de type TStrings contenant la liste des noms complets de chaque variable dans le processus (ex : 'Variables.ValidationAction')
// processDocRUD : Référence du document décrivant le processus (ex : 'PROCESS-0009')
// executionNo : Référence de l'exécution dans laquelle cette fonction va extraire la valeur de la variable.
// destList : Objet de type TStrings destiné à recevoir la liste des valeurs extraites pour chaque variable donnée (l'ordre est conservé).
procedure ReadFormularVarsAsString(variableNames: TStrings; processDocRUD: String; executionNo: Integer; destList: TStrings);
var
pst: TProcessStatSource;
i: Integer;
begin
destList.Clear;
pst:=TProcessStatSource.CreateFromDocRUD(processDocRUD);
pst.Filters:='ExecutionNo='+IntToStr(executionNo);
pst.Open(variableNames.CommaText);
if not pst.EOF then begin
for i:=0 to variableNames.Count-1 do
destList.Add(pst.CurrentRowItem[i]);
end else begin
for i:=0 to variableNames.Count-1 do
destList.Add('');
end;
end;