Neste artigo estarei demonstrando como se fazer pesquisa no Delphi usando o componente ClientDataSet, eu criei um banco de dados e uma tabela chamada Pessoa que nos servirá de demonstração.

 

Tabela Pessoa

IDPESSOA

INTEGER

NOME

VARCHAR(30)

ENDERECO

VARCHAR(45)

BAIRRO

VARCHAR(25)

CIDADE

VARCHAR(25)

TELEFONE

VARCHAR(10)

SALARIO

NUNERIC(10,2)

DATACADASTRO

DATE

 

 

            Crie uma nova Aplicação e uma nova conexão e adicione em nosso formulário os seguintes componentes e altere-os como descreve os quadro abaixo:

 

SqlDataSet

Name

sdsPesquisa

SqlConnection

O nome da sua conexão

CommandText

select

BAIRRO,

CIDADE,

DATACADASTRO,

ENDERECO,

IDPESSOA,

NOME,

SALARIO,

TELEFONE from PESSOA

WHERE IDPESSOA =:pIDPESSOA

 

Onde temos WHERE IDPESSOA =:pIDPESSOA, estou passando o paramento através da variável pIDPESSOA            para alimentar nossa claususula WHERE.

 

DataSetProvider

Name

dspPesquisa

DataSet

sdsPesquisa

 

ClientDataSet

Name

cdsPesquisa

ProviderName

dspPesquisa

 

DataSource

Name

dtsPesquisa

DataSet

cdsPesquisa

 

E por fim um DbGrid, mude a propriedade name para dbgPesquisa e a DataSource para dtsPesquisa. Adicione também um Edit e no evento OnKeyPress coloque o seguinte código:

 

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

1  if key = #13 then

2 begin

3    With cdsPesquisa do

 4  begin

 5   close;

 6     FetchParams;

 7     Params.ParamByName('pIDPESSOA').AsInteger:=StrToInt(Edit1.Text);

 8    Open;

    end;

  end;

end;

 

Linha 1: Se a tecla for o Enter faça, #13 é a representação da tecla Enter.

Linha 3: Com o cdsPesquisa faça.

Linha 5: Fechamos o ClientDataSet cdsPesquisa, para receber o parâmetro.

Linha 6: Passamos o parâmetro pIDPESSOA.

Linha 7: Alimenta o parâmetro pIDPESSOA.

Linha 8: Abrimos o ClientDataSet..

 

Campo String

Vamos aprender agora como pesquisar por campo string, é muito simples, vamos modificar o nosso SQL, deixe-o como descrito a seguir:

 

SqlDataSet

Name

sdsPesquisa

SqlConnection

O nome da sua conexão

CommandText

select

BAIRRO,

CIDADE,

DATACADASTRO,

ENDERECO,

IDPESSOA,

NOME,

SALARIO,

TELEFONE from PESSOA

WHERE NOME :pNOME

 

A única diferença a clausula Where, trocamos a compo IDPESSOA por NOME e retirei o singal de (=) afinal queremos passar o parâmetro.

 

Retorne ao evento OnkeyPress do Edit e modifique o código deixando igual ao descrito a seguir:

 

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

1  if key = #13 then

2 begin

3    With cdsPesquisa do

 4  begin

 5   close;

 6     FetchParams;

 7     Params.ParamByName('pNOME').AsString:=Edit1.Text+’%’;

 8    Open;

    end;

  end;

end;

 

Só mudei a linha 7 para alterarmos o nome do parâmetro, e não convertermos em integer, afinal o campo edit já é string.

 

 

LIKE: Com este operador, podemos comparar cadeias de caracteres utilizando padrões de comparação (Wildcard) para um ou mais caracteres. Normalmente o caracter percentual (%) substitui zero, um ou mais caracteres e sublinha (_) substitui um caractere.

            Utilizando a combinação desses caracteres especiais com o que se quer localizar, pode-se conseguir uma variedade muito grande de expressões. Veja na tabela abaixo:

 

Expressão

Explicação

LIKE ‘A%’

Todas as Palavras

LIKE ‘%A’

Todas que terminem com a letra A

LIKE ‘%A%’

Todas que tenham a letra A em qualquer posição

LIKE ‘A_’

String de dois caracteres que tenham a primeira letra A e o segundo caractere seja qualquer outro.

LIKE ‘_A’

String de sois caracteres cujo primeiro caractere seja qualquer um e a última letra seja A

LIKE ‘_A_’

String de três caracteres cuja segunda letra seja A, independentemente do primeiro ou do último caractere.

LIKE ‘%A_’

Todos que tenham a letra A na penúltima posição e a última seja qualquer outro caractere

LIKE ‘_A%’

Todos que tenham a letra A na segunda posição e o primeiro caractere seja qualquer um.

 

CONTAINING: Este operador tem a mesma função do LIKE, com a diferença que ele não difere se maiúsculo ou minúsculo, ele também busca em qualquer parte do nome ou seja se você digitar João ele trará João Carlos, Carlos João, Roberto João da Silva e etc.

 

Exemplo

select

BAIRRO,

CIDADE,

DATACADASTRO,

ENDERECO,

IDPESSOA,

NOME,

SALARIO,

TELEFONE from PESSOA

WHERE NOME Containing :pNOME

 

Fico por aqui, até o próximo arigo.

 

 

Rubens Antunes

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