Access VBA:新規レコードを判定し、メッセージで登録をキャンセルする

新規レコードかどうかはNewRecordプロパティで分かります、新規の場合はTrue、その他の場合はFalseになります。登録をキャンセルするには、フォームの更新前処理イベントの引数のCancelをTrueに設定します。




BackHome BackTipsへ Backメニューへ

フォームを作成し更新前処理イベントを設定する

下の商品コード・商品名・単価を登録するフォームを作成しました。
商品コード・商品名・単価を登録するフォーム

フォームをデザインビューで開き、プロパティシートを開きます。
選択の種類で「フォーム」にし、イベントタブの「更新前処理」で[イベントプロシージャ]を選択し、右の[…]ボタンをクリックします。
「更新前処理」で[イベントプロシージャ]を選択する

新規レコードを判定するVBAの作成

VBE画面が開き、Form_BeforeUpdateのプロシージャが表示されるので、下記のVBAを入力します。
Form_BeforeUpdateのプロシージャにVBAを入力する

・If Me.NewRecord Thenで新規レコードの場合の処理を行います。
・MsgBoxの引数「vbOKCancel + vbCritical」で、[OK][キャンセル]ボタンと警告アイコンを表示します。
・[キャンセル]ボタンが押された場合は、Form_BeforeUpdateの引数のCancelをTrueにします。

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim lret As Long
    
    If Me.NewRecord Then
        lret = MsgBox("新規レコードを登録しようとしています。間違いないですか?", _
            vbOKCancel + vbCritical, "製品登録")
        If lret = vbCancel Then
            Cancel = True
        End If
  End If
End Sub

実行画面です。
新規レコードを登録しようとすると、メッセージが表示され[OK]を押すと登録され、[キャンセル]を押すと入力画面に戻ります。
新規レコードを登録しようとした画面

NewRecordプロパティは読み取り専用の為、Falseに設定することはできません。
ですのでNewRecordがTrueの状態で、登録しないでフォームを閉じようとするとメッセージが表示されてしまいます。
このメッセージを表示させたくない場合は、データが入力されていなければ、このレコードを削除するなどの処理が必要になります。



BackHome BackTipsへ Backメニューへ

Copyright(C) FeedSoft