Fórum Relação de tabelas #401479

23/05/2011

0

Tenho um cadastro de produto onde um campo esta relacionado com outra tabela, atraves de uma dblookupcombobox (onde faz a referencia atraves do codigo), para cadastrar ele esta certo porem qdo tento listar o produto em outro formulario ele me mostra o codigo e nao o nome, tentei utilizar este codigo que peguei em um wexemplo na internet:  
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from TABELAPRODUTO);
ADOQuery1.Open;//Ate aqui estou pesquisando o nome do produto cadastrado

ADOQuery2.Close;
ADOQuery2.SQL.Add('Select * from TABELAREPRESENTANTE where CODIGO = '+adoquery1.FieldByName('Fornecedor').DisplayText;
ADOQuery1.Open;
    quando executo ele da o seguinte erro: 'Erro de sintase, na expressão de consulta 'CODIGO = 2 select * form TABELAREPRESENTANTE where CODIGO = 1''
Daniel

Daniel

Responder

Posts

23/05/2011

Eliel Martins

  Olá Daniel !

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT *                                                         ');
ADOQuery1.SQL.Add('  FROM TABELAPRODUTO TP                                          ');
ADOQuery1.SQL.Add(' INNER JOIN TABELAREPRESENTANTE TR ON (TR.CODIGO = TP.FORNECEDOR ');
ADOQuery1.Open; 



  Minha sugestão é que você faça um SQL dessa forma fazendo um JOIN entre essas tabelas, fica uma consulta mais rápida e dessa forma evita você fazer dois select´s. Agora o porque está ocorrendo esse erro, pelo que pude perceber você não limpou a propriedade SQL do componente ADOQuery2 (ADOQuery2.SQL.CLear), se você tiver utilizado essa query para outra consulta e depois tentar fazer outra consulta sem limpar a propriedade SQL acontece erro tábem. Mas se você seguir a instrução que lhe passei acima dará certo.
 


   Espero ter ajudado, qualquer coisa me procure, no que eu puder ajudar estou ai.



   Eliel G. Martins
Responder

Gostei + 0

25/05/2011

Daniel

  Olá Daniel !

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT *                                                         ');
ADOQuery1.SQL.Add('  FROM TABELAPRODUTO TP                                          ');
ADOQuery1.SQL.Add(' INNER JOIN TABELAREPRESENTANTE TR ON (TR.CODIGO = TP.FORNECEDOR ');
ADOQuery1.Open; 



  Minha sugestão é que você faça um SQL dessa forma fazendo um JOIN entre essas tabelas, fica uma consulta mais rápida e dessa forma evita você fazer dois select´s. Agora o porque está ocorrendo esse erro, pelo que pude perceber você não limpou a propriedade SQL do componente ADOQuery2 (ADOQuery2.SQL.CLear), se você tiver utilizado essa query para outra consulta e depois tentar fazer outra consulta sem limpar a propriedade SQL acontece erro tábem. Mas se você seguir a instrução que lhe passei acima dará certo.
 


   Espero ter ajudado, qualquer coisa me procure, no que eu puder ajudar estou ai.



   Eliel G. Martins
Kra coloquei desta forma e ao editar ele da uma mensagem de erro: 'erro de sintaxe na operação JOIN' 
Responder

Gostei + 0

25/05/2011

Rafael Mattos

  Olá Daniel !

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT *                                                         ');
ADOQuery1.SQL.Add('  FROM TABELAPRODUTO TP                                          ');
ADOQuery1.SQL.Add(' INNER JOIN TABELAREPRESENTANTE TR ON (TR.CODIGO = TP.FORNECEDOR ');
ADOQuery1.Open; 



  Minha sugestão é que você faça um SQL dessa forma fazendo um JOIN entre essas tabelas, fica uma consulta mais rápida e dessa forma evita você fazer dois select´s. Agora o porque está ocorrendo esse erro, pelo que pude perceber você não limpou a propriedade SQL do componente ADOQuery2 (ADOQuery2.SQL.CLear), se você tiver utilizado essa query para outra consulta e depois tentar fazer outra consulta sem limpar a propriedade SQL acontece erro tábem. Mas se você seguir a instrução que lhe passei acima dará certo.
 


   Espero ter ajudado, qualquer coisa me procure, no que eu puder ajudar estou ai.



   Eliel G. Martins
Kra coloquei desta forma e ao editar ele da uma mensagem de erro: 'erro de sintaxe na operação JOIN' 





quando vc tem JOIN vc não pode alterar.

no componentes DBX é só mexer nas ProviderFLAGS, mas no ADO não sei te dizer
Responder

Gostei + 0

29/04/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

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

Aceitar