Ir para conteúdo
  • Cadastre-se

dev botao

PESQUISA


Ver Solução Respondido por Reinaldo Silveira,
  • Este tópico foi criado há 2572 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

ola pessoal 

estou com seguinte situação 

eu sei que tem o LIKE  '% agulha %

 

para trazer todos os produtos que contem o nome agulha nao importa a posição blz

 

mas agora tem outra coisa  o nome do produto por exemplo  AFASTADOR DE INCISÃO MEDIO

a pessoa que digitar 

 

"AFASTADOR MEDIO "    para trazer na busca , eu tentei usando o like mas nao da certo 

 

Postado
18 minutos atrás, dreamsoft_PR disse:

ola pessoal 

estou com seguinte situação 

eu sei que tem o LIKE  '% agulha %

para trazer todos os produtos que contem o nome agulha nao importa a posição blz

mas agora tem outra coisa  o nome do produto por exemplo  AFASTADOR DE INCISÃO MEDIO

a pessoa que digitar 

"AFASTADOR MEDIO "    para trazer na busca , eu tentei usando o like mas nao da certo 

 

Você vai ter que fazer uma consulta separando as strings pelo espaço (' ').

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Postado

Eu faço dessa forma ... talvez ajude
 

if Key=13 then begin
   ListBox.Items := Separar(eConsulta.Text,' ');
   qProdutos.Close;
   qProdutos.SQL.Text := 'select * from PRODUTOS where DESCRICAO like :vD1';
   qProdutos.ParamByName('vD1').AsString := '%'+ListBox.Items.Strings[0]+'%';

   if Listbox.Items.Count >= 2 then begin
      qProdutos.SQL.Add('and DESCRICAO like :vD2');
      qProdutos.ParamByName('vD2').AsString := '%'+ListBox.Items.Strings[1]+'%';
   end;

   if Listbox.Items.Count >= 3 then begin
      qProdutos.SQL.Add('and DESCRICAO like :vD3');
      qProdutos.ParamByName('vD3').AsString := '%'+ListBox.Items.Strings[2]+'%';
   end;

   if Listbox.Items.Count >= 4 then begin
      qProdutos.SQL.Add('and DESCRICAO like :vD4');
      qProdutos.ParamByName('vD4').AsString := '%'+ListBox.Items.Strings[3]+'%';
   end;

   qProdutos.SQL.Add('order by DESCRICAO');
   qProdutos.Open;
end;
function Separar(Text: String; Break: Char): TStringList;
var I: Integer; Pal: String;
begin
Result := TStringList.Create;
if (Length(Text) = 0) or (Break = '') then
  Result.Add(Text)
else
for I := 1 to Length(Text) do
  if Text[I] = break then begin
    Result.Add(Pal);
    Pal := '';
   end else Pal := Pal+Text[I];
if Pal <> '' then
  Result.Add(Pal);
end;

 

  • Obrigado 1
Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

  • 1 mês depois ...
  • Solution
Postado

Observe que se você fazer a consulta assim: LIKE '%AFASTADOR%MEDIO%' você obterá resultado. Ou seja, substituindo o caractere espaço por porcentagem, sua pesquisa ficará mais flexível.

Tente algo assim:

qry.Close;
qry.SQL.Add('SELECT * FROM TB_PRODUTO WHERE DESCRICAO LIKE :pesquisa');
qry.Params[0].Value := '%'+ StringReplace(edtPesquisa.Text, ' ', '%', [rfReplaceAll]) +'%';
qry.Open;

Eu uso desta forma e nunca tive problemas.

  • Curtir 1
  • Obrigado 1
Postado
1 hora atrás, Reinaldo Silveira disse:

Observe que se você fazer a consulta assim: LIKE '%AFASTADOR%MEDIO%' você obterá resultado. Ou seja, substituindo o caractere espaço por porcentagem, sua pesquisa ficará mais flexível.

Tente algo assim:


qry.Close;
qry.SQL.Add('SELECT * FROM TB_PRODUTO WHERE DESCRICAO LIKE :pesquisa');
qry.Params[0].Value := '%'+ StringReplace(edtPesquisa.Text, ' ', '%', [rfReplaceAll]) +'%';
qry.Open;

Eu uso desta forma e nunca tive problemas.

OBRIGADO simples e pratico , resolveu o problema!!

  • Obrigado 1
  • Este tópico foi criado há 2572 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.