Fórum Duvida aopesquisar usando Filter em ADOQuery #262221

15/12/2004

0

Olá pessoal. Estou com uma dúvida em relação à propriedade Filter do ADOQuery. Eu preciso filtrar o campo nome do AdoQuery de acordo com o nome que o usuário digitar. Só que eu preciso que sejam mostrados todos os nomes que contenham em qualquer parte a palavra digitada pelo usuário, ou seja, pesquisar se a palavra existe no nome, no sobrenome,etc. Eu pesquisei em alguns livros e vi o seguinte exemplo:

nome = ´M*´.

Teoricamente o exemplo acima deveria mostrar todos os nome que comecem com a letra ´M´. Mas isso não resolve o meu problema. Eu preciso que a procura seja feita em qualquer parte do nome. Mas mesmo usando o exemplo acima, deu erro quando coloquei a propriedade Filtered como True. Desculpem se já existe resposta para minha dúvida no fórum, mas está dando erro quando tento procurar por qualquer mensagem anterior no fórum. Acho que a pesquisa está com problemas. Será que alguém pode me ajudar com a dúvida acima?
Desde já agradeço.
Cristiano.


Cristiano D.

Cristiano D.

Responder

Posts

15/12/2004

Cristiano D.

Desculpem. Esqueci de dizer que estou usando Delphi 5 e como banco de dados o Access 2000.


Responder

Gostei + 0

16/12/2004

Thomaz_prg

Pq não usar comando SQL??

With ADOQuery do begin
  close;
  SQL.Clear;
  SQL.Add(´Select * from tabela where nome like :m´);
  Parameters.ParamByName(´m´).Value := ´*M*´;
  open
end;


Só não lembro se é * ou ¬.

Com filter vc pode tentar:


nome = ´*M*´


Responder

Gostei + 0

16/12/2004

Cristiano D.

Eu também prefiro usar sql. Entretanto o meu cliente não tem uma computador muito potente. E toda vez que eu abro a query para uma pesquisa, o programa está demorando muito. Depois que a query já está aberta, a velocidade do programa está satisfatória. O problema é ao abrir a query. Então, o que eu estou tentando verificar é se eu abrir a query ao carregar o programa e aplicar um filtro com ela já aberta, quero ver se o desempenho melhora um pouco. Bom, realmente não sei se isso vai ajudar na velocidade do programa, por isso estou querendo testar dessa forma.
Como eu disse acima, quando eu uso a máscara ´*´ está dando erro.
Eu tentei da seguinte forma:

Clientes.Filter := ´nome = ´ + QuotedStr(nome);

Dessa maneira funciona. Mas quando eu insiro a máscara ´*´, dá uma mensagem de erro.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar