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