InputQuery: Busca no DBGrid

Nesta Quick Tips, mostramos como fazer uma pesquisa no DBGrid usando a função InputQuery

Vamos fazer uma pesquisa no DBGrid usando uma função chamada InputQuery, que está declarada na unit Dialogs, como vemos a seguir:

function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean;

Por ser uma function e retonar um Boolean podemos testar a mesma com um IF, por exemplo:

If InputQuery('Dúvida ' , 'Digite o seu nome ',xVarNome) then begin . . . . . end;

Como podemos notar, ela tem um parâmetro do tipo Var, ou seja um parâmetro por referência. Para usá-la precisamos ter uma variável declarada do tipo string, que no exemplo acima foi a xVarNome : String;.

Vamos construir agora um exemplo e fazer funcionar a nossa pesquisa. O objetivo é que quando pressionarmos a tecla ENTER poderemos digitar o conteúdo de pesquisa desejado na coluna que estivermos selecionando no nosso DBGrid. Para construir o exemplo vamos adicionar uma TClientDataSet e um DataSource, além de um DBGrid. O mecanismo de conexão não é o foco do nosso exemplo, tanto que estamos usando um arquivo XML criado com a ajuda do TClientDataSet, como mostra a Figura 1.

Figura 1. Arquivo XML

Vamos implementar então o nosso código para fazer a pesquisa de acordo com a coluna selecionada no DBGrid. Para isso vamos usar o manipulador de evento OnKeyPress do nosso DBGrid:

procedure TFrmPrincipal.DBGrid1KeyPress(Sender: TObject; var Key: Char); Var xVarNome : String; begin if key = #13 then begin if InputQuery('Pesquisar ' + TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName, 'Digite o conteúdo',xVarNome) then TDBGrid(Sender).DataSource.DataSet.Locate(TDBGrid(Sender). Columns[TDBGrid(Sender).SelectedIndex].FieldName, xVarNome, [loPartialKey,loCaseInsensitive]); end; end;

Como podemos notar o código é bem simples, mas muito útil. Para testar basta você ter registro no seu DBGrid, depois escolher uma coluna e pressionar a tecla ENTER, então aparecerá uma caixa como a da Figura 2.

Figura 2. Testando o código
´

Você digita o conteúdo e novamente usa o ENTER ou clica no OK e pronto. Será feita uma pesquisa dentro do DataSet usando o campo NOME, com o conteúdo digitado.

Artigos relacionados