TProcessStatSource - Exemples

TProcessStatSource = class (TStatSource)Interface de TProcessStatSourceExemples 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);
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);
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);
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;