我试图在连接到SQL Server后端的Access应用程序中设置错误处理,以防止Access将空主键传递给服务器。我基于Properly Handling Errors in VBA (Excel)为什么'On Error'总是触发,就好像密钥为空?
我的代码中使用更新前和代码
假设如果用户设置S_ID为空(或创建一个新的记录时,离开它为空)来运行ErrHandler代码。但是它总是运行ErrHandler代码。
Private Sub S_ID_BeforeUpdate(Cancel As Integer)
Dim trigger As Integer
On Error GoTo ErrHandler
If Me.S_ID Is Null Then
trigger = 1/0
End If
Exit Sub
ErrHandler:
MsgBox ("Key was null, fix it")
Resume Resume_spot
Resume_spot:
End Sub
我还没有当发生错误,因此没用MsgBox
和缺乏Resume_spot
后什么写什么,我希望获得这样做的代码。在我得到那么远之前,我想让错误处理正确触发。
显然不是答案,但不应该***后端***负责维护自己的身份列完整性?为什么它不是在SQL Server中定义为“NOT NULL”? – Comintern
顺便说一句,如果你的'MsgBox'包含'Err.Number'或'Err.Description',它使得调试变得非常容易。 – Comintern
*“(或在创建新记录时将其保留为空)”* - 这将**不触发控件的“BeforeUpdate”事件。 – Andre