• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

cfaria

Erro do Delete (INNER JOIN)

6 mensagens neste tópico

Bom dia

Fiz um delete para eliminar registo relacionados em duas tabelas, mas está a dar um erro que é o seguinte:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

[Microsoft][Controlador Microsoft Access de ODBC] Especifique a tabela que contém os registos que pretende eliminar.

A instrução sql é a seguinte:

sql = "DELETE FROM Pedido INNER JOIN Pedido_Detalhe ON Pedido.Cod_Pedido = Pedido_Detalhe.Cod_pedido WHERE Pedido.Cod_Pedido = "& registo

Conexao.Execute(sql)

Tabelas:

Pedido

Cod_pedido (Chave Primaria)

Pedido_Detalhe

Cod_pedido (Campo relacionado com a tabela Pedido)

Alguem me pode ajudar????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o campo Pedido.Cod_Pedido está definido na base de dados com que tipo de dados ? e a variavel "registo" ?  As vezes poderá ser da passagem dos dados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes de mais, esta dúvida está colocada no local errado. Há uma secção de bases de dados.

Quanto ao teu problema, o erro é até bem explicito, não estás a dizer quais as tabelas onde queres eliminar os registos.

Ora experimenta:

sql = "DELETE PEDIDO, PEDIDO_DETALHE FROM Pedido INNER JOIN Pedido_Detalhe ON Pedido.Cod_Pedido = Pedido_Detalhe.Cod_pedido WHERE Pedido.Cod_Pedido = "& registo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva,

O campo Pedido.Cod_pedido é a chave primaria da bd (Numeração automatica).

A variavel "registo" é a que recebe o valor do id do Recordset

Tentei a instrução que o M6 colocou mas dá o mesmo erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

[Microsoft][Controlador Microsoft Access de ODBC] Especifique a tabela que contém os registos que pretende eliminar.

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas pessoal

Resolvi com dois deletes, o primeiro apaga os registos na tabela filha com um while e o segundo apaga o registo principal na tabela mãe.

Agradeço vossa ajuda

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva,

O campo Pedido.Cod_pedido é a chave primaria da bd (Numeração automatica).

A variavel "registo" é a que recebe o valor do id do Recordset

Tentei a instrução que o M6 colocou mas dá o mesmo erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

[Microsoft][Controlador Microsoft Access de ODBC] Especifique a tabela que contém os registos que pretende eliminar.

Abraço

Corre isso a partir da consola da BD e vê lá o erro que dá. Por vezes as implementações de ODBC, (des)ajudadas pela tradução podem induzir em erro.

Se bem que o problema deverá ser de simples resolução, algum pormenor de sintaxe, por certo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora