Trabalhando a propriedade Filter do Clientdataset – Parte 2

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (5)  (1)

Segunda parte do artigo sobre o recurso de Filtrar registros no Clientdataset.

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:
Name = qryInscricoes
SQL = select * from Inscricoes
ConectionString = Provider=SQLOLEDB.1;Password=SuaSenha;Persist Security Info=True;User ID=SeuUsuario;Initial Catalog=NomeBanco;Data Source=NomeDoServidor;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096; Use Encryption for Data=False;Tag with column collation when possible=False
Loginprompt = false

No Componente de TDatasetProvider coloque as seguintes propriedades:
Name = dspInscricoes
Dataset = qryInscricoes

No Componente de TClientdataset coloque as seguintes propriedades:
Name = cdsInscricoes
Providername = dspInscricoes

No Componente de TDataSource coloque as seguintes propriedades:
Name = DTInscricoes
Dataset = cdsInscricoes

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 codigo:
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 codigo:
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 codigo:
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.


 

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.

 

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.

Até o proximo artigo

Anderson Luiz

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?