



Olá pessoal!
Esta dica é bem simples, mas para quem não esta habituado a utilizar a propriedade
Filter de DataSet pode causar alguns problemas.
O uso é bem fácil, veja o exemplo:
1 2 3 4 | ClientDataSet1.Filter := 'DATA >= ' + FormatDateTime('dd/mm/yyyy', DateTimePicker1.DateTime) + 'AND DATA <= ' + FormatDateTime('dd/mm/yyyy', DateTimePicker2.DateTime); ClientDataSet1.Filtered := True; |
O segredo aqui é a formatação da data, que deverá ser dd/mm/yyyy,
assim o filtro irá funcionar normalmente.
inclusive pode ser adicionados outros filtros juntamente com o filtro
da data. Para mais detalhes veja: showdelphi.com.br/filtros-de-dados-sem-o-uso-de-sql-delphi/
Outra dica importante é que a Propriedade Filter por ser utilizada em Qualquer
DataSet.
Exemplos:
ClientDataSet
FDMemTable
ZQuery
e etc
Você precisa fazer o login para publicar um comentário.
Não fuincionou o filtro por data. Aparece a seguinte mensagem;
—————————
Debugger Exception Notification
—————————
Project Master.exe raised exception class EDBClient with message ‘Type mismatch in expression.’. Process stopped. Use Step or Run to continue.
—————————
OK Help
—————————
1) Precisa colocar a data entre aspas (QuotedStr);
2) É melhor usar DateToStr() para evitar problemas com idioma e formato de data;
3) Pode ser necessário remover horários da data (usamos DateOf);
var
sDataIni, sDataFim: string;
begin
sDataIni := QuotedStr(DateToStr(DateOf(DateTimePicker1.DateTime)));
sDataFim := QuotedStr(DateToStr(DateOf(DateTimePicker2.DateTime)));
cds.Filter := ‘DATA >= ‘ + sDataIni + ‘ AND DATA <= ' sDataFim;
cds.Filtered := True;
end;