Estou quebrando a cabeça para encontrar uma solução que envolve a impossibilidade de cancelar o evento AoClicar.
Em um formulário inseri no evento AntesDeAtualizar, um comando para verificar preenchimento de alguns campos. Caso estejam preenchidos de maneira incorreta, uma mensagem informa o erro e cancela a atualização (com Cancel = True).
Se o preenchimento estiver correto, então uma nova caixa de mensagem pergunta se desejo ou não salvar as alterações.
SE ao tentar navegar entre os registros, clicar no botão salvar ou mesmo clicar no botão X para sair, Quando tento atualizar, houver erro do preenchimento, a atualização é cancelada e o procedimento que tentava fazer (mudar de registro, salvar ou sair do formulário é PARADO).
O problema: quando clico no botão Fechar (DoCmd.Close), a mensagem de erro é apresentada, a digitação é desfeita, mas o formulário é fechado.
Gostaria que ele não fechasse ao clicar em Fechar se houver erro de digitação.
O precedimento está assim:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim CxMsg As Integer
If IsNull(Campo1) Or IsNull(Campo2) Or IsNull(Campo3) Or IsNull(Campo4) Then
MsgBox "Campos obrigatórios podem estar vázios. Verifique para continuar.", _
vbInformation, "Digitação Ausente ou Incompleta!"
Cancel = True
Else
CxMsg = MsgBox("Deseja salvar as alterações?", vbYesNo + vbQuestion + vbDefaultButton1, "Salvar Alterações")
If CxMsg = vbNo Then
DoCmd.RunCommand acCmdUndo
End If
End If
Em um formulário inseri no evento AntesDeAtualizar, um comando para verificar preenchimento de alguns campos. Caso estejam preenchidos de maneira incorreta, uma mensagem informa o erro e cancela a atualização (com Cancel = True).
Se o preenchimento estiver correto, então uma nova caixa de mensagem pergunta se desejo ou não salvar as alterações.
SE ao tentar navegar entre os registros, clicar no botão salvar ou mesmo clicar no botão X para sair, Quando tento atualizar, houver erro do preenchimento, a atualização é cancelada e o procedimento que tentava fazer (mudar de registro, salvar ou sair do formulário é PARADO).
O problema: quando clico no botão Fechar (DoCmd.Close), a mensagem de erro é apresentada, a digitação é desfeita, mas o formulário é fechado.
Gostaria que ele não fechasse ao clicar em Fechar se houver erro de digitação.
O precedimento está assim:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim CxMsg As Integer
If IsNull(Campo1) Or IsNull(Campo2) Or IsNull(Campo3) Or IsNull(Campo4) Then
MsgBox "Campos obrigatórios podem estar vázios. Verifique para continuar.", _
vbInformation, "Digitação Ausente ou Incompleta!"
Cancel = True
Else
CxMsg = MsgBox("Deseja salvar as alterações?", vbYesNo + vbQuestion + vbDefaultButton1, "Salvar Alterações")
If CxMsg = vbNo Then
DoCmd.RunCommand acCmdUndo
End If
End If
Última edição por rgondim em 9/3/2012, 13:19, editado 1 vez(es)