Access 2013上的运行时错误2115

时间:2014-10-17 13:44:40

标签: ms-access access-vba

我的Access数据库链接到我的SQL Server 2008。 我正在尝试验证输入到文本框字段(称为diverNo)的值是否为数字(此字段中只允许使用数字)。我希望一旦用户离开该字段就进行验证,如果用户试图放置任何不是数字的字符,则该字段将被清除:

Private Sub Form_Error(DataErr As Integer, Response As Integer)

If DataErr = 2113 Then
Response = acDataErrContinue
MsgBox ("Only numbers are allowed in Diver Number")
Me.diverNo = "" ' <- this line cause the error

Exit Sub

End If
End Sub

我得到运行时错误2115,其中指出“为此字段设置为BeforeUpdate或ValidationRule属性的宏或函数阻止Microsoft Office Access在字段中保存数据。”

有任何解决此问题的建议吗?

2 个答案:

答案 0 :(得分:1)

调用Undo方法并在Cancel处理程序中将True设置为BeforeUpdate似乎有效。

Private Sub diverNo_BeforeUpdate(Cancel As Integer)

If IsNumeric(Me.diverNo) = False Then
    Cancel = True 'stops the record from being saved.
    Me.diverNo.Undo 'only the control itself is affected.

    MsgBox ("Please only enter a number")
End If

End Sub
如果您还想评估输入到字段中的旧值和新值(对于绑定字段),

BeforeUpdate会很好。这在AfterUpdate方法中丢失,因为记录已经更新。

答案 1 :(得分:0)

我会在diverNo字段上创建一个AfterUpdate事件,并检查值:

Private Sub diverNo_AfterUpdate()

如果不是IsNumeric(Me.diverNo)那么

Me.diverNo.Undo或Me.diverNo = Null

结束如果

End Sub

使用当前代码,设置Me.diverNo =“”正在尝试在数字字段中保存字符串值。您可能还想考虑为diverNo控件创建ValidationRule。