Ir para o conteúdo principal

PEX - Filtrando dados por data

Neste tópico iremos mostrar como criar uma grade de dados filtrando os dados pela data inserida em dois formulários.

Iremos retorna os dados via SQL no PEX filtrando a data utilizando dois campos com variáveis do tipo data, e ao clicar o botão a grade será carregada com os dados já filtrados.

Resultado final:

image-1640627453700.png

Criação dos formulários de data e grade de dados:

image-1640627497607.png

Inserindo o PEX ao sair do botão: 

image-1640627605949.png

Codígo PEX:

const
     cs_Dtinicio = '1';
     cs_Dtfim    = '2';
     cs_grade    = '3';
var 
  locds      : TLibCDS;
  lsSQL      : string;
  liIdRegistro: Integer;
  loNovoRegistro: TJSONObject;
begin   

    lsSQL := 'select usuario,observacao,data,valortotalitens from pedido where data between '+TSTR.Aspa(FormatDateTime('dd.mm.yyyy',aoFormularios.GetJSON('1').GetDt('TEXTO')))+' and '+TSTR.Aspa(FormatDateTime('dd.mm.yyyy',aoFormularios.GetJSON('2').GetDt('TEXTO')))+' and observacao <> ''.''';
    
    loCDS := of_CriaCDSporSQL(lsSQL);
    try
      if locds.of_TemDados() then 
        begin
          loCDS.of_IniciaWhile;
          try
            loCDS.of_Primeiro;
            while not loCDS.of_FimDS do
            begin
              loNovoRegistro := TJSONObject.Create;
              loNovoRegistro.AddPair('USUARIO', locds.GetStr(['USUARIO']));
              loNovoRegistro.AddPair('OBSERVACAO', locds.GetStr(['OBSERVACAO']));
              loNovoRegistro.AddPair('DATA', locds.GetDt(['DATA']));
              loNovoRegistro.AddPair('VALORTOTALITENS', Currtostr(locds.GetCurr(['VALORTOTALITENS'])));
              aoFormularios.GetJSON(cs_grade).GetArrayJSON('DADOS').Add(loNovoRegistro);
              loCDS.of_ProxReg;
            end;
          finally
            loCDS.of_FinalizaWhile;
          end;
        end;
    finally
      loCDS.Free;
    end;        
end;