Filtros de Dados sem o uso de SQL
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; |
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; |
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.
-
Giovani Da Cruz
-
11.042 views
- 0 comentários
- 30 de junho de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo