bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Impedir mensagem Interna do Access

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é 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

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:

Function Excluir()
on error goto TrataErro
Beep
if MsgBox("Este Registro será excluído. Confirma?", vbQuestion + vbYesNo, "Excluir Registro") = vbyes then
   DoCmd.RunCommand acCmdDeleteRecord
end if
sair:
   exit function
trataErro:
   Msgbox "Este registro não pode ser excluído..."
   resume sair
End Function

Ou você pode testar se existem registros na tabela relacionada, antes de realizar a pergunta. Exemplo:

Function Excluir(cod as long)
Beep
'verifica se tem registro na tabela relacionada
if DCount("*","NomeTabelaRelacionada","id =" & cod ) > 0 then
   msgbox "Este registro não pode ser excluido..."
   exit function
end if
if MsgBox("Este Registro será excluído. Confirma?", vbQuestion + vbYesNo, "Excluir Registro") = vbyes then
   DoCmd.RunCommand acCmdDeleteRecord
end if
End Function

Se ainda assim não funcionar, experimente o código abaixo, no evento "ao ocorrer erro" do formulário:

Private Sub Form_Error (DataErr As Integer, Response As Integer)
'3200 erro de exclusão de registro
If DataErr = 3200 Then
   'Cancela mensagem de erro do Access
    Response = acDataErrContinue
    'Cria a sua mensagem personalizada
    MsgBox "Sua mensagem"
End If
End Sub

Usuário Marcos:

Avelino muito obrigado!

As duas primeiras funções funcionaram perfeitamente!


 

 


Não há comentário

Envie seu comentário: