Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Fazer Uma Busca Em Sql E Usar Like Ao Invés De =


Guest --MXVinícius --

Pergunta

Guest --MXVinícius --

Prezados,

Segue código:

begin
  with datamodule1 do
begin
QVnd.Sql.Clear;
QVnd.Sql.ADD('Select * from cad_vnddor.db');
QVnd.Sql.ADD('Where Nome =' + edit6.text);
QVnd.Open;
DSVnd.DataSet:=QVnd;
end;

end;

Gostaria de modificá-lo para buscar usando LIKE.

Podem me ajudar?

Grato,

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
Guest Pericles Sevegnani

ola,

para utilizar o operador LIKE, voce deve informar o simbolo % antes e depois da string procurada, assim:

WHERE Nome = '%joao%'

O problema é que na montagem do SQL no Delphi, voce não esta passando as aspas, que ficam no inicio e fim da busca.

então, proceda da seguinte maneira:

Query.SQL.Add('WHERE Nome = ' + Char(39) + '%' + Edit6.Text + '%' + Char(39));

Onde, Char(39) é uma funcao do Delphi, para retornar o caractere das aspas simples.

As vezes, pode dar problema com as aspas simples (39) por causa de alguma configuracao de caractere, então tente com aspas duplas (34).

Mas com 1 das duas vai funcionar, de certeza.

[]s

Péricles Sevegnani

http://blogsqlserver.blogspot.com/

Link para o comentário
Compartilhar em outros sites

  • 0
para utilizar o operador LIKE, voce deve informar o simbolo % antes e depois da string procurada, assim:

WHERE Nome = '%joao%'

apenas completanto, o uso do "%" irá determinar que parte da string será "generalizada". Por exemplo:

1) procurar apenas nomes que começam com "MA":

- então você teria "MA%" e como resultado poderia ter MAria, MAriana, MAurício;

2) procurar apenas nomes que terminam com "DE":

- então você teria "%DE" e como resultado poderia ter AdelaiDE, MatilDE;

3) procurar nomes que contenham "TE" em qualquer posição.

- então você teria (como exemplificado pelo Péricles) "%TE%" e como resultado poderia ter ElizabeTE, TErezinha, MarTEndau.

Abraços

p.s.: bom vê-lo por aqui Péricles. Seja bem vindo. ;)

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --MXVinícius --

Olá Péricles e olá amigos,

Obrigado pelo seu código Péricles, eu busquei bastante e vi que é possível fazer isso de diversas formas, mas achei esse seu método o mais amigável para o programador iniciante.

Implementei e funcionou, só substituí = por LIKE.

O código para a busca ficou assim:

begin
  with datamodule1 do
begin
QVnd.Sql.Clear;
QVnd.Sql.ADD('Select * from cad_vnddor.db');
QVnd.SQL.Add('WHERE Nome LIKE ' + Char(39) + '%' + Edit6.Text + '%' + Char(39));
QVnd.Open;
DSVnd.DataSet:=QVnd;
end;

Editado por Micheus
Removido o "Resolvido"
Link para o comentário
Compartilhar em outros sites

  • 0
Guest --MXVinícius --

Interessante, apesar de ter dito que o tópico estava resolvido, agora o código idêntico retorna vazio em um outro formulário.

QProd.Sql.Clear;
QProd.Sql.ADD('Select * from cad_prod.db');
QProd.SQL.Add('WHERE Descricao LIKE' + Char(39) + '%' + Edit3.Text + '%' + Char(39));
QProd.Open;
DSProd.DataSet:=QProd;
//QuickRep1.Preview;

:unsure:

Bem, realmente não é fácil a profissão...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Pericles Sevegnani

ola,

notei que voce esta utilizando outra tabela e outro edit, confere ?

Antes de confiar no resultado de uma Query no Delphi, SEMPRE execute-a antes no utilitario SQL (iSql, Query Analyzer, etc.).

Para relatorios principalmente, somente passe p/ codificacao no Delphi quando o SQL esta confiavel "por fora".

abracos,

Péricles Sevegnani

http://blogsqlserver.blogspot.com/

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --MXVinícius --

Péricles,

Não encontrei um programa iSQL para baixar apenas o outro citado, mas não conseguiu verificar o código dá erros no driver.

Ainda estou tentando e testando diversas maneiras de fazer isso, mas ainda sem sucesso.

Grato,

Vinícius

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --MXVinícius --

Prezados o código FUNCIONOU e ficou assim:

procedure TF_RelaProdutos.BitBtn3Click(Sender: TObject);
begin
  with QProd do
  begin
SQL.Clear;
SQL.add ('Select * From cad_prod.db where Nome like:varnome');
Parambyname ('Varnome').asstring:= '%' + edit3.text + '%';
Close;
Open;
  End;
    end;

----------------------------------------------------------------------------

Esse fórum é um oásis no deserto, programadores profissionais extremamente qualificados mas muito gentis e prestativos.

Muito obrigado.

Agora sim, foi RESOLVIDO.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...