Filtragem de Registro por Datas

Delphi

08/04/2018

Amigos, como faço para fazer esta mesma pesquisa abaixo através de uma tabela ?
Ou seja, ao Invés de usar uma QUERY, usar uma TABELA.


// TOTAL SOCORRO
     with Sql_Total_socorro do
     begin
       close;
       sql.Clear;
       sql.Add('select * from tbl_local');
       sql.Add('where data between :data_ini and :data_fim ');
       ParamByName('data_ini').Value:=FormatDateTime('yyyy-mm-dd',data_ini.date);
       ParamByName('data_fim').Value:=FormatDateTime('yyyy-mm-dd',data_fim.date);
       open;
       FetchAll;
     end;
Adailso Cosme

Adailso Cosme

Curtidas 0

Respostas

Jerson Boer

Jerson Boer

08/04/2018

Para fazer uso de filtro em componente de tabela, você vai passar as condições no parâmetro Filter e ativar também o parâmetro Filtered, exemplo:

(Data >= X AND Data <= Y) AND (....)

Sem colocar "where", somente os parâmetros de filtro.
GOSTEI 0
Adailso Cosme

Adailso Cosme

08/04/2018

Pode ser mais específico ?
Sou novo ....
GOSTEI 0
Adailso Cosme

Adailso Cosme

08/04/2018

var<br />
filtro:string;<br />
begin<br />
Filtro := ''Select * From tbl_local'';<br />
Filtro := Filtro+'' where data between :data_ini and :data_fim'';<br />
dm.tbl_local.SQL.Clear;<br />
dm.tbl_local.SQL.ADD(Filtro);<br />
dm.tbl_local.ParamByName(''data_ini'').Value:=FormatDateTime(''yyyy-mm-dd'',data_ini.date);<br />
dm.tbl_local.ParamByName(''data_fim'').Value:=FormatDateTime(''yyyy-mm-dd'',data_fim.date);<br />
dm.tbl_local.Open;<br />
end;<br />
<br />
<br />
JÁ TENTEI.......
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

08/04/2018

Qual é o banco de dados utilizado?
Os campos da tabela são tipo data? timestamp?

Quando trabalhar com datas, não use a propriedade Value. Seja mais específico:
Use AsDateTime ou AsSQLTimeStamp (em conjunto com a função DateTimeToSQLTimeStamp, da unit SqlTimSt)

dm.tbl_local.ParamByName(''data_ini'').AsDateTime := data_ini.date;
dm.tbl_local.ParamByName(''data_fim'').AsDateTime := data_fim.date;


ou

dm.tbl_local.ParamByName(''data_ini'').AsSQLTimeStamp := DateTimeToSQLTimeStamp(data_ini.date);
dm.tbl_local.ParamByName(''data_fim'').AsSQLTimeStamp := DateTimeToSQLTimeStamp(data_fim.date);

GOSTEI 0
Adailso Cosme

Adailso Cosme

08/04/2018

Tipo date.
GOSTEI 0
Adailso Cosme

Adailso Cosme

08/04/2018

A filtragem por uma Query fica perfeito, acontece que ao abrir o relatorio FastReport, as integridades referenciais não permanecem.
No DBGrid ficam perfeitas...
GOSTEI 0
POSTAR