我的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在字段中保存数据。”
有任何解决此问题的建议吗?
答案 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。