



Olá pessoal, hoje vou falar sobre o uso de filtros em DataSets.
Este é um recurso muito interessante disponível em qualquer
componente descendente do TDataSet. Com ele podemos diminuir a
necessidade de uso de SQL direto no Delphi.
Vamos por exemplo utilizar o ClientDataSet ou o FDMemTable se preferir.
Observe que estes componentes possuem duas propriedades:
Filter e Filtered.
O Filter é utilizado para especificar um restrição nos dados de um
dataset, fazendo que o dataset exiba apenas os registros que atendem
as condições.
A propriedade Filter do dataset recebe uma string que descreve a
condição da restrição. Está opção é bem parecida com as clausulas
que normalmente são utilizadas para montar um “where” numa query SQL.
Para ajudar a exemplificar, veja a tabela abaixo:
Para utilizar estes comandos no Filtro, veja o exemplo abaixo:
1 2 3 4 5 | procedure TForm1.BtnFiltrarClick(Sender: TObject); begin CDSAgenda.Filter := 'CODCLIENTE = 2 AND DATA=''01/01/2015'''; CDSAgenda.Filtered := True; end; |
Veja que a propriedade Filtered = True, diz que estamos utilizando o filtro,
caso você altere ela para False, o filtro será ignorado.
Também é possível o uso de curingas, para ignorar acentos, por exemplo:
1 2 3 4 5 | procedure TForm1.BtnFiltrarClick(Sender: TObject); begin CDSAgenda.Filter := 'CLIENTE = ''JO_O'''; CDSAgenda.Filtered := True; end; |
Neste caso, o terceiro caractere pode ser qualquer um.
Vale ressaltar que o uso de filtro é muito mais eficiênte em questão de
performance do que fechar uma query, alterar o sua SQL e reabri-la.
Em breve vou postar o link de um projeto de exemplo que demonstra na prática
o uso destas propriedades.
Baseado no post: www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-1/13571
Dúvidas ou sugestões, deixe nos comentários do post.