DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Índice: Pesquisa em Memória - Delphi

Veja neste artigo a utilização de índice nos permite pesquisarmos um registro em memória sem precisarmos ir ao banco de dados dando um select, podemos utilizar alguns métodos do ClientDataSet como o FindKey e FindNearest.



A utilização de índice nos permite pesquisarmos um registro em memória sem precisarmos ir ao banco de dados dando um select, podemos utilizar alguns métodos do ClientDataSet como o FindKey e FindNearest.

 

FindKey: Ele faz uma busca precisa em memória trazendo o registro que contenha a expressão utilizada pelo usuário, ou seja, se você deseja buscar por nome, você terá que digitar exatamente como está descrito no ClientDataSet, ou seja, se você quer o João Carlos, terá que digitar João Carlos, não basta digitar só João.

 

Coloque em nosso formulário um Edit e mude a propriedade name para edtLocaliar e no evento OnKeyUP do mesmo coloque o seguinte código:

 

procedure TfrmPrincipal.edtLocalizarKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

  cdsPessoa.IndexFieldNames:='id';

  cdsPessoa.FindKey([edtLocalizar.Text]);

end;

 

Para utilizarmos o método FindKey temos que ter um índice definido, aqui criamos um índice com o campo id e pedimos para o método FindKey localizar nesse índice o registro o qual passamos a instrução no Edit para localizá-lo.

 

FindNearest: Esse método posicionará o cursor no nome mais próximo ao digitado pelo o usuário ou exatamente como o usuário digitou, um fato importante é que ele assim como o FindKey,  posiciona o cursor no registro, eles não nos retorna uma lista aproximada.

 

procedure TfrmPrincipal.edtLocalizarKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

  cdsPessoa.IndexFieldNames:='nome';

  cdsPessoa.FindNearest([edtLocalizar.Text]);

end;

 

Assim como o método FindKey o método FindNearest precisa também de índice para poder varrer esse índice a diferença que ele procura o registro que está mais próximo do que foi digitado no Edit.

 

Nota                                                                                                                         

Para utilizar os métodos FindKey e FindNearest não podemos definir mais de um campo na propriedade indexFieldNames.

 

Vamos criar um maneira para escolhermos por qual campo desejamos procurar. Adicione em nosso formulário um ComboBox e na propriedade Itens coloque os seguintes itens:

 

ID

Nome

Cidade

UF

Telefone

Salário

 

Marque a propriedade ItemIndex como 0 e no evento OnKeyUP do Edit coloque o seguinte código, como demonstra a seguir:

 

 

procedure TForm2.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

  if ComboBox1.ItemIndex = 0 then

  begin

    cdsPessoa.IndexFieldNames:='id';

    cdsPessoa.FindKey([edtLocalizar.Text]);

  end;

  if ComboBox1.ItemIndex = 1 then

  begin

    cdsPessoa.IndexFieldNames:='nome';

    cdsPessoa.FindNearest([edtLocalizar.Text]);

  end;

  if ComboBox1.ItemIndex = 2 then

  begin

    cdsPessoa.IndexFieldNames:='cidade';

    cdsPessoa.FindNearest([edtLocalizar.Text]);

  end;

  if ComboBox1.ItemIndex = 3 then

  begin

    cdsPessoa.IndexFieldNames:='UF';

    cdsPessoa.FindNearest([edtLocalizar.Text]);

  end;

  if ComboBox1.ItemIndex = 4 then

  begin

    cdsPessoa.IndexFieldNames:='Telefone';

    cdsPessoa.FindNearest([edtLocalizar.Text]);

  end;

  if ComboBox1.ItemIndex = 5 then

  begin

    cdsPessoa.IndexFieldNames:='Salario';

    cdsPessoa.FindNearest([edtLocalizar.Text]);

  end;

end;

Fico por aqui, até o próximo.

 

Rubens Antunes

Autor do Livro: Delphi – Faça Uma Aplicação Comercial







    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Rubens Antunes

Programador Delphi desde de 2004 e Autor do Livro Delphi - Faça Uma Aplicação Comercial


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03