Ir para o conteúdo
cfaria

Erro do Delete (INNER JOIN)

Mensagens Recomendadas

cfaria    0
cfaria

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????

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tiago Salgado    2
Tiago Salgado

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    81
M6

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
cfaria    0
cfaria

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
cfaria    0
cfaria

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    81
M6

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade