Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tatiane.InterArt

[Resolvido] Pesquisa por vários nomes ao mesmo tempo

Recommended Posts

Estou com problema em relação à pesquisa, ou melhor, em relação à relatório, mas é como se fosse pesquisa.

Em uma tela com um DBGrid preciso pesquisar por exemplo o nome ou o endereço de alguns clientes distintos: exemplificando:

 

No Edit1 digito por exemplo Carlos de Souza

No Edit2 digito por exemplo Maria da Silva

No Edit3 digito por exemplo Gervásio Aparecido e

No Edit4 digito por exemplo Crystopher Amaral

 

Preciso fazer uma pesquisa através do IBQuery para mostrar no DBGrid e posteriormente transferir para um relatório!

 

tentei assim:

 

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('Select * from Cliente where nome like '''+Edit1.Text+'%'' and nome like '''+Edit2.Text+'%'' and nome like '''+Edit3.Text+'%'' and nome like '''+Edit4.Text+'%''');

IBQuery1.Open;

 

Na verdade não está dando erro, mas não exibe absolutamente nada rsrsrsrsrs algém poderia me dizer como posso realizar esse tipo de pesquisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro vou explicar porque o problema está ocorrendo, ok?

 

AND significa "e" em inglês. Se você ler a SQL que está montando você está pedindo que retorne todos os registros onde o nome seja o texto do edit1 e ao mesmo tempo o nome também seja o do edit2 e assim por diante. Como o mesmo campo não pode ter vários valores em uma única linha de registro, você não está vendo nenhum registro.

 

O certo nesse caso é utilizar o operador OR (do inglês "ou").

 

with IBQuery1 do
   begin
	  Close;
	  SQL.Clear;
	  SQL.Add('SELECT');
	  SQL.Add('   *');
	  SQL.Add('FROM');
	  SQL.Add('   CLIENTE');
	  SQL.Add('WHERE');
	  SQL.Add('   (NOME LIKE :NOM1) OR (NOME LIKE :NOM2) OR');
	  SQL.Add('   (NOME LIKE :NOM3) OR (NOME LIKE :NOM4)');
	  ParamByName('NOM1').AsString := QuotedString('%'+Edit1.Text+'%');
	  ParamByName('NOM2').AsString := QuotedString('%'+Edit2.Text+'%');
	  ParamByName('NOM3').AsString := QuotedString('%'+Edit3.Text+'%');
	  ParamByName('NOM4').AsString := QuotedString('%'+Edit4.Text+'%');
	  Open;
   end;

ok? Qualquer dúvida, volte a postar aqui!

 

t+!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal, valeu mesmo, rsrs o mais engraçado é q pensei na possibilidade mais obvia do que estava precisando, quando na verdade a resposta correta não estava tão longe assim...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.