Julio Lustosa 9/12/2014, 03:31
Olá!
A mensagem de erro está aparecendo provavelmente por que o registro que você estava cadastrando já está salvo na tabela destino.
Quando você inicia o cadastro de um novo registro, nele não salva imediatamente na tabela o novo registro que ainda está sendo editado, mas após ele salvar o registro na tabela, o comando DoCmd.RunCommand acCmdUndo, ou Me.Undo, não irão funcionar. O máximo que eles farão é desfazer a última alteração feita no registro.
No módulo opções do Access, opção Configurações do Cliente, há uma opção chamada Intervalo de atualização. Com esta opção, você pode determinar em quanto tempo o Access fará uma tentativa de atualização automática na base de dados. 60 é tempo padrão (1 min). Você pode mexer aí se desejar mas, o ideal mesmo é tratar este problema através de uma solução lógica.
Há algumas formas de você contornar esse probleminha e o mais rápido é esse:
Private Sub Cancel_Click()
If MsgBox("Você deseja cancelar o registro?",vbQuestion + vbYesNo,"Cancelar") = vbYes then
' O comando Me.Refresh atualiza o formulário e por consequência, o record que você iniciou o cadastro.
' Ou você pode usar também o comando DoCmd.RefreshRecord
Me.Refresh
' O comando abaixo irá deletar o registro que deseja cancelar
DoCmd.RunCommand acCmdDeleteRecord
' O comando abaixo deixa o formulário em branco, em ponto de bala para um novo registro.
DoCmd.GoToRecord , , acNewRec
End If
End Sub
Como eu disse acima, esta é uma opção e é a mais simples. Se não lhe atender, vai tentando outras formas.
Abraços.