Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Full Burn

Relacionamento de tabelas

Recommended Posts

Boa tarde a todos,Tenho duas tabelas em um BD Access:Produtos- codigo- referenciaCores- codigo- cod_prod- corNa tabela produtos, são cadastrados todos os produtos e a tabela cores é uma tabela auxiliar onde são cadastradas as cores disponíveis para cada produto. Ou seja, eu tenho vários registros do mesmo produto na tabela cores para cores diferentes. O que liga uma a outra, é o campo cod_prod da tabela cores que recebe o valor do campo codigo da tabela produtos referente ao produto cadastrado.Preciso fazer uma busca, onde a pessoa digita a referência do produto e o sistema busca na tabela produto os produtos que contenham o que a pessoa digitou dentro do campo referência e retorna os codigos para buscar na tabela cores estes códigos no campo cod_prod e mostrar todas as cores dos produtos que foram retornados.Tentei duas alternativas:

SQL.Open ("SELECT cores.codigo, cores.cod_prod, cores.cor, cores.ativo, produtos.codigo, produtos.referencia FROM cores INNER JOIN produtos ON cores.cod_prod = produtos.codigo WHERE (([produtos]![referencia]='DVL 1340')) ORDER BY " & Ordem), produtos

Erro: Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access Driver] The specified field 'Codigo' could refer to more than one table listed in the FROM clause of your SQL statement. /adm/cores_lista.asp, line 37

SQL.Open("SELECT cores.cod_prod, cores.cor, cores.ativo, produtos.codigo, produtos.referencia FROM cores INNER JOIN produtos ON cores.cod_prod = produtos.codigo WHERE produtos.referencia LIKE '%" & buscarpor & "%' ORDER BY cores.cor"), produtos

Não dá erro, mas também não retorna nada.Alguém pode me ajudar?Agradeço qualquer ajuda.[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

este erro é qual sql?[Microsoft][ODBC Microsoft Access Driver] The specified field 'Codigo' could refer to more than one table listed in the FROM clause of your SQL statement.Ta dizendo que tem um campo que tem o mesmo nome em mais de uma tabela entao voce deve especificar de qual tabela é este campo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mário,Bom dia,A SQL do erro é essa:

SQL.Open ("SELECT cores.codigo, cores.cod_prod, cores.cor, cores.ativo, produtos.codigo, produtos.referencia FROM cores INNER JOIN produtos ON cores.cod_prod = produtos.codigo WHERE (([produtos]![referencia]='DVL 1340')) ORDER BY " & Ordem), produtos

Mas como você pode ver, em nenhum momento existe o campo codigo sem especificar a tabela.O que pode ser?Obrigado pela ajuda.[]'s..::Full Burn::..

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente isso, você tem um erro com a concatenação e pela estrutura você montou com o assistente o access, acho que essa parte

 

 

 

SQL.Open ("SELECT cores.codigo, cores.cod_prod, cores.cor, cores.ativo, produtos.codigo, produtos.referencia FROM cores INNER JOIN produtos ON cores.cod_prod = produtos.codigo WHERE (produtos.referencia='DVL 1340') ORDER BY " &Ordem&", produtos")

SQL.Open("SELECT cores.cod_prod, cores.cor, cores.ativo, produtos.codigo, produtos.referencia FROM cores INNER JOIN produtos ON cores.cod_prod = produtos.codigo WHERE produtos.referencia LIKE '%" & buscarpor & "%' ORDER BY cores.cor, produtos")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jhonatan,Bom dia,Acho que houve algum mal-entendido no meio do caminho.O último nome "produtos", que está fora dos parenteses no meu código original, é uma variável com o caminho do banco de dados, portanto não pode estar dentro da SQL.Mas obrigado, de qualquer forma.[]'s..::Full Burn::..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ops, desculpa....nem percebi que você estava executando assim, é que eu costumo usar diferente

 

para tentar redimir meu erro, veja se assim resolve:

 

 

 

SQL.Open("SELECT produtos.referencia, cores.codigo, cores.cod_prod, cores.cor, produtos.referenciaFROM cores INNER JOIN produtos ON cores.cod_prod = produtos.codigo WHERE (((produtos.referencia)="DVL 1340")) ORDER BY "&ordem&";"),produtos

o erro aparentemente está pq você seleciona o campo código das duas tabelas, sendo que você deve selecionar apenas 1 deles para não "confundir" o sql no momento de colocar em ordem

Compartilhar este post


Link para o post
Compartilhar em outros sites

tranquilo tiozinho http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.