Relação de tabelas
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:
quando executo ele da o seguinte erro:
'Erro de sintase, na expressão de consulta 'CODIGO = 2
select * form TABELAREPRESENTANTE where CODIGO = 1''
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;Daniel
Curtidas 0
Respostas
Eliel Martins
23/05/2011
Olá Daniel !
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
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
GOSTEI 0
Daniel
23/05/2011
Olá Daniel !
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'
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
GOSTEI 0
Rafael Mattos
23/05/2011
Olá Daniel !
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'
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
quando vc tem JOIN vc não pode alterar.
no componentes DBX é só mexer nas ProviderFLAGS, mas no ADO não sei te dizer
GOSTEI 0
José
23/05/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0