Bom dia Paulo .....
eu uso esse tipo de pesquisa no DBGrid usando os componentes DBExpress .....

   procedure TFrmCadProduto.Edit1Change(Sender: TObject);
    begin
    FrmDm.CDSCadProduto.filter   := 'NOME_PRODUTO LIKE ' + 
QuotedStr('%'+Edit1.text+'%');
    FrmDm.CDSCadProduto.Filtered := true;
    FrmDm.CDSCadProduto.locate('nome_produto','edit1.text',[loPartialKey]) ;
  end;

 sendo que a tabela esta carregada na memória, evita de ficar indo e 
voltando no servidor !!!!

espero ter ajudado !!!!


Luciano Angelini
Prefeitura deLupionópolis-Pr


Claudiney - Listas escreveu:
>  
>
> Olá Paulo. Tudo bem?
>
> Isso que você fez, do ponto de vista da linguagem, não está errado.
>
> Porém, funciona muito bem em uma tabela com poucos registros. A partir do
> momento que você tiver muitos dados na tabela isso pode (e provavelmente
> vai) te atrapalhar bastante.
>
> Eu trabalho um pouco diferente. Deixo o usuário digitar o que ele quer
> pesquisar primeiro, sem fazer nada, e quando ele clicar num botão de
> pesquisar, ou der enter no fim da digitação eu faço a pesquisa. Dessa
> maneira fica mais tranqüilo, pois faz apenas um acesso ao servidor. Da
> maneira que vc está fazendo hoje ele faz um acesso para cada letra 
> digitada.
> Imagine uma pesquisa com muitas letras. E cada acesso ao servidor é uma
> instrução SQL que é executada.
>
> Para fazer dessa maneira é só colocar o seu código no evento click de um
> botão, ou no evento onkeyup ou onkeypress to Edit, tratando o 
> parâmetro Key
> e verificando se é um enter (#13 no caso do onkeypress ou vk_return no
> onkeyup).
>
> Abraço.
>
> _____
>
> Claudiney Cogo
> N2 Sistemas e Soluções em Informática
> Av. São Paulo, 172 - 15º Andar - Sala 1505
> Fone/Fax: (44) 3029-6053 - Maringá - Paraná
> <http://www.n2solutions.com.br/ <http://www.n2solutions.com.br/>> 
> www.n2solutions.com.br
> <http://www.nfe.n2solutions.com.br/ 
> <http://www.nfe.n2solutions.com.br/>> www.nfe.n2solutions.com.br
> <http://www.studion2.com.br/ <http://www.studion2.com.br/>> 
> www.studion2.com.br
>
> De: delphi-br@yahoogrupos.com.br 
> <mailto:delphi-br%40yahoogrupos.com.br> 
> [mailto:delphi-br@yahoogrupos.com.br 
> <mailto:delphi-br%40yahoogrupos.com.br>] Em
> nome de pcedisi
> Enviada em: segunda-feira, 24 de agosto de 2009 13:52
> Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
> Assunto: [delphi-br] DBGrid
>
> Ola!
>
> Por favor, preciso de ajuda com DBGrid!
>
> Tenho um DBGrid de clientes e uso onChange para fazer pesquisa
> a cada letra digitada, o problema é que ele redimensiona a cada
> busca alem de redesenhar o DBGrid gerando um efeito de piscar
> a cada letra digitada. Alguem pode ajudar? Isso que estou fazendo
> é o certo?
>
> procedure TfrmClientes.edtPesquisaChange(Sender: TObject);
> begin
> dmcli.qryClientes.Close;
> dmcli.qryClientes.Params[0].AsString := Trim(edtPesquisa.Text);
> dmcli.qryClientes.Open;
> end;
>
> obrigado,
>
> Paulo
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 

Responder a