Trabalhando a propriedade Filter do Clientdataset

Aprendendo a utilizar o recurso de filtro do clientdataset

O Filter é usado para especificar um filtro nos dados do clientdataset fazendo que o clientdataset exiba apenas os registros que atendem as condições. A propriedade Filter do Clientdataset recebe uma string que descreve a condição filtro. Está opção é bem parecida com as clausulas que inserimos para montar um “where” numa query SQL.

Imagine o seguinte conjunto de dados:

Figura 1 - Conjunto de dados

Dentre os recursos de Filtro no clietdataset temos:

Figura 2 - Recursos de filtros

Uma vez que o Clientdataset trabalha com os dados em memoria, podemos usar a propriedade Filter para exibir apenas os registros que desejar, fazendo um filtro mediante a uma clausula, como se fosse o "Where" de uma query SQL. A vantagem é que a aplicação não precisa fazer varias solicitações de pesquisa ao banco de dados, deixando assim sua aplicação bem mais rapida. No artigo anterior vimos que podemos colocar diversos tipos de clausulas diferentes no Filter do Clientdataset. Vamos ver nesta segunda parte do artigo como trabalhar com isso na pratica. Vamos lá...

Inicie o Delphi e abra um novo projeto: File > New > VLC Forms Application. Crie uma tela simples como mostra a figura abaixo:

No meu caso eu criei a seguinte tabela no SQLServer:

CREATE TABLE Inscricoes( ID int NOT NULL, Nome varchar(50) NOT NULL, Data_Inscr datetime NOT NULL, Estado varchar(50) NOT NULL, Pais varchar(50) NOT NULL )

Vamos agora realizar a preparação dos componentes de acesso a dados:

No Componente de TAdoquery coloque as seguintes propriedades:

No Componente de TDatasetProvider coloque as seguintes propriedades:

No Componente de TClientdataset coloque as seguintes propriedades:

No Componente de TDataSource coloque as seguintes propriedades:

Com essa ligação entre os componentes, já podemos retornar os dados que estão na tabela para o clientdataset. Para Visualizar os registros do Clientdataset no TDBgrid, na propriedade DataSource indique o DSInscricoes.

No Evento OnShow Do Form insira o seguinte código:

procedure TForm1.FormShow(Sender: TObject); begin //Irá abrir a conexão com o banco de dados, retornando os dados da tabela. cdsInscricoes.Open; end;

No Evento OnClick do Botão Adicionar Filtro insira o seguinte código:

procedure TForm1. btAdicionarFiltroClick(Sender: TObject); begin //Insere como filtro a clausula que esta no Edit cdsInscricoes.Filtered := false; cdsInscricoes.Filter := EditFiltro.Text; cdsInscricoes.Filtered := true; end;

No Evento OnClick do Botão Remover Filtro insira o seguinte código:

procedure TForm1. btRemoverFiltroClick(Sender: TObject); begin //Remove o Filtro e Exibe todos os registros que estão no clientdataset cdsInscricoes.Filtered := false; end;

Execute a aplicação, veja q ele irá aparecer no grid todos os registros que estão cadastros no banco, pois a propriedade Filtered do Clientdataset vem como padrão False. No codigo que está no clique do botão Adicionar Filtro, estamos passando o conteudo do EditFiltro para a propriedade Filter do Clientdataset. Ao mudar esta propriedade Filtered para True, o clietdataset irá filtrar os dados conforme a clausula que estiver na propriedade Filter.

Figura 3 - Propriedade filter

Para remover o Filtro, no botão Remover Filtro estamos passando para a propriedade Filtered o valor False, fazendo que o Filter seja desconsiderado e volte ao seu estado original.

Figura 4 - Removendo filter

Com isso você pode ir mudando o valor do EditFiltro, colocando clausulas que vimos no artigo anterior, e clicando no Adicionar Filtro.

Espero ter ajudado a todos.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados