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] > >