プロが教えるわが家の防犯対策術!

OS:Win10
Access2016

access初心者です。
帳票フォームにて入力チェックを設定したいのですが、
主キーに設定している項目を未入力の状態で登録しようとすると、
自分で設定した未入力チェックより先にAccessのエラーメッセージが出てしまいます。

*「’[フィールド名]’フィールドに値を入力してください」というメッセージが出ます。
*自身で設定した入力チェックは、登録ボタン押下後の処理で設定しています。

自分で設定した未入力チェックが優先で働くようにする方法はあるのでしょうか。
詳しい方いらっしゃいましたら、ご教示のほどよろしくお願いいたします。

A 回答 (3件)

登録ボタン押下時のイベントではなく、キークリックイベント使っているのですか?


もしかして、マウスのホイールでレコードが移動するタイプ?
    • good
    • 0

ダメでしたか。


メッセージの内容としてはレコードの保存をしようとしたときに主キーに設定した項目で
キー違反が発生しているのでメッセージが表示されるのでそれより前のイベントであれば
入力チェックができると思うのですが。
回避方法としてとりあえず主キーの設定をやめて入力チェックを徹底することですかね。
    • good
    • 0

イベントが発生する順番があるのでその影響だと思います。


https://support.office.com/ja-jp/article/%E3%83% …

フォームの更新前処理のイベントで主キーに設定した項目は入力チェックしてはどうですか?
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(主キーの項目) = True Then
MsgBox ("nullですよ")
Cancel = True
End If
End Sub
    • good
    • 0
この回答へのお礼

y504さん

ご回答ありがとうございます。
イベントの発生は順番が決まっているのですね。
勉強になりました。ありがとうございます。

ただ、教えて頂いた通り、フォーム更新前処理に入力チェックを入れてみても、
やはりAccessのメッセージが先に来てしまいました。
(質問のときに書き忘れていたのですが、accessのメッセージはフォームを更新した直後に表示されます)

教えて頂いたURLのページによると、フォーム更新前処理の前にキークリック処理もあるようなので、
下記のように書いてみたのですが、それでもaccessのチェックが優先されるようでした。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If IsNull(主キーの項目) = True Then
MsgBox ("nullですよ")
Cancel = True
End If
End Sub

主キーの場合は、自分でチェックをすることができないのでしょうか……?

お礼日時:2016/06/27 10:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています