Impedir Mensagem Interna do Access
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário Marcos:
Boa tarde.
Em todos os meus projetos uso o relacionamento entre as tabelas, através de seus índices. Isso evita, que ao se excluir um registro, falte dados numa tabela em que se relacionava. Porém, sempre enfrentei o problema da mensagem interna do Access, quando tento excluir este registro:
Erro de tempo de execução 3200
O registro não pode ser excluído ou alterado porque a tabela ItensTab inclui registros relacionados a ele.
Como suprimir esta mensagem e detectar, por VBA, qual a tabela relacionada? Já usei docmd.SetWarning, mas não funciona.
Suporte:
Marcos, o que você quer fazer com os dados da tabela relacionada? Excluir também os registros?
Ofereça um BD com as tabelas relacionadas em questão e mostre como está usando o código para efetuar a exclusão.
Usuário Marcos:
Oi Avelino!
Vou te dar um exemplo: - a cada exclusão de uma venda, as parcelas de receitas a receber seriam excluídas automaticamente. Até aí está tudo OK!
O cliente cancelou a venda, logo, excluí tudo relacionado a ela: receitas, comissões de venda, itens vendidos... porque está na relação de tabelas, além da Integridade Referencial, a exclusão de registros relacionados.
Agora, vamos para outro exemplo: - entro na tela de um produto e sem querer tento excluí-lo. Por estar relacionado por Integridade Referencial, a Tabela ItensDeVenda, o Access dá a mensagem que informei anteriormente. Se eu retiro a relação, ele é excluído e nas vendas onde ele faria parte, o registro aparece em branco e só são visíveis a Quantidade e o Valor.
É esse aviso do Access que quero evitar e que informe, como nesse exemplo, que este produto faz parte de uma relação em Vendas. Portanto, só podendo ser excluído se o registro onde ele consta em venda, seja antes excluído.
Segue o código que estou utilizando:
Function Excluir() Dim Mensg As String Beep Mensg = MsgBox("Este Registro será excluído. Confirma?", vbQuestion + vbYesNo, "Excluir Registro") If Mensg = vbNo Then GoTo 20 Else GoTo 10 10 DoCmd.RunCommand acCmdDeleteRecord 20 End Function
Suporte:
Marcos, experimente tratar o erro. Exemplo:
Faça o login aqui para ter acesso ao código.
Ou você pode testar se existem registros na tabela relacionada, antes de realizar a pergunta. Exemplo:
Faça o login aqui para ter acesso ao código.
Se ainda assim não funcionar, experimente o código abaixo, no evento "ao ocorrer erro" do formulário:
Faça o login aqui para ter acesso ao código.
Usuário Marcos:
Avelino muito obrigado!
As duas primeiras funções funcionaram perfeitamente!
Não há comentário |