3

フォームのすべての必須フィールドに入力しないと、右上隅の「x」をクリックしたときに見苦しいエラーが表示されます。デフォルトのエラーをカスタム エラー メッセージでオーバーライドしたいのですが、このコードを関連付ける VBA イベントがわかりません。そこにエラー ハンドラを配置すると、Form_Close イベントが機能しないようです。

アクセス 2010

Private Sub Form_Unload(Cancel As Integer)
On Error GoTo Err_Unload          ' Initialize error handling.
    'insert routine
Exit_Unload:                      ' Label to resume after error.
    Exit Sub                      ' Exit before error handler.
Err_Unload:                       ' Label to jump to on error.
    'MsgBox Err & " " & Error$    ' Place error handling here.
    Resume Exit_Unload
End Subenter code here

このコードを使用している間でもエラーが発生します。

Private Sub Form_Unload(Cancel As Integer)
On Error GoTo Err_Unload          ' Initialize error handling.
    ' Code to do something here.
Exit_Unload:                          ' Label to resume after error.
    Exit Sub                  ' Exit before error handler.
Err_Unload:                           ' Label to jump to on error.
    'MsgBox Err & " " & Error$           ' Place error handling here.
    Resume Exit_Unload
End Sub
4

4 に答える 4

3

フォームの現在のレコードへの変更が保存されていないフォームを閉じようとすると、Access はまずそれらの変更をコミットしようとします。Form_Unloadまたはからそのアクションを傍受することはできませんForm_Close

ところで、あなたはそれについて言及しませんでしたが、別のレコードに移動するときに、必要なフィールドの値が欠落している保存されていない変更が含まれている場合、別のレコードに移動するときに同じことが起こると思います。

フォームのレコード ソースに autonumber フィールドを持つテーブルが含まれている場合は、フォームの before update イベントを使用して、必要な値が存在するかどうかを確認します。関連する自動付番フィールドがない場合は、フォームの挿入前イベントと更新前イベントの両方からチェックを行うことを検討してください。

ただし、これの要点が、必須フィールドの欠落値に対してよりわかりやすいメッセージを取得することである場合は、テーブルのプロパティを変更して満足できるかどうかを確認してください。たとえば、 に設定RequiredしてからフィールドNoに を使用すると、わかりやすいテキスト メッセージをフィールドのプロパティとして割り当てることができます。Is Not NullValidation RuleValidation Text

テーブル設計の Required プロパティと Validation プロパティ

于 2012-12-23T18:15:00.430 に答える
2

あなたは使用したいかもしれません:

Private Sub Form_Unload(Cancel As Integer)

End Sub
于 2012-12-21T21:37:18.797 に答える
1

実際には というフォーム イベントがありOn Error、これには 2 つの引数があります。エラーの内容と Access が実行する応答です。

于 2012-12-24T22:17:48.047 に答える