Boa tarde, Taty!

Não conheço a estrutura das suas tabelas, mas não seria melhor usar Left Join?

Ficaria assim:
With DM.QPesquisar do
  Begin
  Close;
  SQL.Clear;
  SQL.ADD(''Select A.COD_PRODUTO, A.DESCRICAO, A.VALOR, C.NOME From PRODUTOS A 
left Join FORNECEDOR C on A.COD_FORNECEDOR = C.COD_FORNECEDOR');
  SQL.Add('Where  C.NOME = '+QuotedStr(LPesquisar.Text)+' or A.DESCRICAO= 
'+QuotedStr(descricao.Text)+' or A.COD_PRODUTO ='+QuotedStr(cod_produto.Text));
  Open;
  end;
Se o Campo COD_PRODUTO for do tipo Numero, não use o QuotedStr()!

Lembre-se de só usar o QuotedStr() quando o tipo do campo for Varchar, Char ou 
outro tipo de campo equivalente (Depende do Banco de Dados que está usando).

Boa sorte.

Ulisses
  ----- Original Message ----- 
  From: T a t y S a n t a n a 
  To: Grupo de Delphi 
  Sent: Tuesday, May 10, 2005 1:11 PM
  Subject: [delphi-br] AJUDA - SQL


  Olá pessoal, olha como ficou minha SQL agora:

  With DM.QPesquisar do

        Begin
          SQL.Clear;
          SQL.Text := 'Select  A.COD_PRODUTO, A.DESCRICAO, A.VALOR, C.NOME From 
PRODUTOS A, FORNECEDOR C Where (C.NOME = '+LPesquisar.Text+' or A.DESCRICAO= 
'+descricao.Text+' or A.COD_PRODUTO ='+cod_produto.Text+') and A.COD_FORNECEDOR 
= C.COD_FORNECEDOR';
          Open;
        End;

  e o erro agora, é o seguinte:

  ERRO:  Conversion error from String.

  Definitivamente não funciona, não sei o que fazer mais.

  Taty Santana

  ----- Original Message ----- 
  From: Anderson Quandt Venancio 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Tuesday, May 10, 2005 10:28 AM
  Subject: Re: [delphi-br] AJUDA - SQL


  Primeiro, você tem que 'isolar' as condições do WHERE, pois senão ele vai se 
perder.

  O correto seria assim:

  SQL.Text := 'Select  A.Cod_produto, A.Descricao, A.valor, C.NOME From 
PRODUTOS A,
  FORNECEDOR C Where (C.NOME = "'+LPesquisar.Text+'" or A.Descricao=
  "'+descricao.Text+'" or A.Cod_Produto ='+cod_produto.Text+ ') and 
A.COD_FORNECEDOR
  = C.COD_FORNECEDOR

  Ou seja, as condições "OR" devem ficar dentro de parêntesis e a outra condição
  (And) fora de parêntesis.

  Em segundo lugar, referente ao erro -104, dá uma conferida no nome das 
tabelas e
  colunas que você colocou no SQL, prá ver se está igual na sua base de dados, 
pois
  normalmente este erro ocorre quando foi informada uma tabela/coluna que não 
existe.

  sds
  Anderson

  >     Olá pessoal bom dia, será que alguém poderia me ajudar. To terminando 
meu
  > projeto de fim de curso e to fazendo as consultas. Utilizei um Query pra
  > fazê-las, só que não dá certo.
  > Preciso pesquisar um produto pelo código dele, pelo nome e pelo fornecedor 
daquele
  > produto. Construí a seguinte rotina.
  >
  > With DM.QPesquisar do
  >       Begin
  >         SQL.Clear;
  >         SQL.Text := 'Select  A.Cod_produto, A.Descricao, A.valor, C.NOME 
From
  > PRODUTOS A, FORNECEDOR C Where C.NOME = "'+LPesquisar.Text+'" or
  > A.Descricao= "'+descricao.Text+'" or A.Cod_Produto ='+cod_produto.Text+ '
  > and A.COD_FORNECEDOR = C.COD_FORNECEDOR';
  >         Open;
  >       End;
  >
  > Não mudei de linha no código SQL aqui é porque não cabe. Aí quando se vai 
pra
  > execução quando eu clico no botão onde programei esse SQL ele dá o seguinte 
erro.
  >
  > DYNAMIC SQL ERROR
  > SQL ERRO COD = - 104
  > TOKEN UNKNOWN - LINE 1, CHAR 148
  > END.
  >
  > Nem sei mais o q testar. Já mudei diversas vezes e nada. Se alguém tiver 
uma idéia.
  >
  > Obrigada..
  >
  > Taty Santana
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  >
  >
  > --
  > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
  >
  > Para ver as mensagens antigas, acesse:
  >  http://br.groups.yahoo.com/group/delphi-br/messages
  >
  > Para falar com o moderador, envie um e-mail para:
  >  [EMAIL PROTECTED] ou [EMAIL PROTECTED]
  >
  > Links do Yahoo! Grupos
  >
  >
  >
  >
  >
  >
  >
  >
  >



  -- 
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]



        Yahoo! Grupos, um serviço oferecido por: 
              PUBLICIDADE
                
       


  
--------------------------------------------------------------------------------
  Links do Yahoo! Grupos

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/
      
    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]
      
    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



  [As partes desta mensagem que não continham texto foram removidas]



  -- 
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]



        Yahoo! Grupos, um serviço oferecido por: 
              PUBLICIDADE
                
       


------------------------------------------------------------------------------
  Links do Yahoo! Grupos

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/
      
    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]
      
    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a