MS-Access VBA:如果触发 Form_Error 事件,如何将字段值设置回旧值

Hel*_*rld 1 ms-access vba

我收到一个请求,如果用户在字段中输入的值未通过数据验证标准,则将其返回到之前的值。

BeforeUpdate如果我使用全局变量来存储.oldvalue然后在事件中重新分配,我可以在其中捕获此事件AfterUpdate

但是,由表结构异常(例如数字字段中的文本)触发的数据验证在事件Form_Error之前触发该事件BeforeUpdate,并且该Form_Error事件与我可以存储为旧值的特定字段无关。

我可以通过在允许空值的所有字段中将表设置为完全自由文本来解决这个问题,这样就不会触发任何Form_Error事件并且所有验证都在BeforeUpdate

这真的是我需要采取的方式吗?必须设置一个无意义的表结构来处理错误似乎很奇怪,但我正在努力想出另一种方法

Bra*_*rad 5

我正在将此评论变成答案。这就是如何从 恢复的要点Form_Error

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    Undo
    Response = 0
End Sub
Run Code Online (Sandbox Code Playgroud)

您可以做更多的事情,例如在屏幕上显示一条消息,说明您对用户做了什么,然后将其隐藏在计时器事件中。只是一些事情让他们不确定为什么他们的数据消失了。