SQL Serverのバックエンドに接続するAccessアプリケーションでエラー処理を設定しようとしていますが、Accessがヌル主キーをサーバーに渡さないようにしています。「On Error」は、キーがヌルであるかのように常にトリガーされますか?
私は私のコードは、ユーザーがnullにS_IDを設定します(または新しいレコードを作成するときにヌルとしてそれを離れた)場合ErrHandlerコードを実行することになっているProperly Handling Errors in VBA (Excel)
に基づいてのBeforeUpdateとコードを使用しています。しかし、それは常に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
後に何の不足を生じたとき、私はアクセスが何をしたいのためのコードを記述したことはありません。私がそれまでに得る前に、私はエラー処理が適切に起動するようにしたい。
If Me.S_ID Is Null Then
:
trigger
と
If IsNull(Me.S_ID) Then
明らかに答えはありませんが、***バックエンド***では、独自のID列の整合性を維持する責任はありませんか? SQL ServerでNOT NULLと定義されているのはなぜですか? – Comintern
ところで、あなたの 'MsgBox'に' Err.Number'または 'Err.Description'が含まれていると、デバッグが非常に簡単になります。 – Comintern
* "(または新しいレコードを作成するときにnullになります)" * - これはコントロールの 'BeforeUpdate'イベントをトリガーしません**。 – Andre