我試圖在連接到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