HOME > 即効テクニック > AccessVBA > データベース・データ保護 > レコード更新の確認を行う

即効テクニック

データベース・データ保護

レコード更新の確認を行う

(Access 2000/2002/2003)
●概要●
コントロールまたはレコードが更新される直前に発生します。イベントプロシージャは、BforeUpdate/更新前処理プロパティに設定します。
BeforeInsertイベントプロシージャの引数にTureを設定すると、BeforeInsertイベントをキャンセルすることができます。ただし、イベントをキャンセルしても、更新が取り消されるだけです。レコードに対して行った変更はそのままなので、しかるべき後処理が必要になります。
次のコードは、新規レコードを更新するかどうかを確認するものです。メッセージダイアログで[いいえ]ボタンがクリックされた場合、イベントをキャンセルします。さらに、Undoメソッドを使って、レコードに対して行った変更を取り消します。

●サンプル●
'レコード更新の確認を行う
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim myRes As Integer
     '更新を確認する
    myRes = MsgBox("レコードを更新しますか", vbYesNo)
    If myRes = vbNo Then
        'イベントをキャンセルする
        Cancel = True
         'レコードの変更を取り消す
        Me.Undo
    End If
End Sub

●実行結果●
データを修正してレコードセレクタをクリックすると、「レコードを更新しますか」というメッセージボックスが表示されます。ここで「いいえ」を選択すると、イベントがキャンセルされ、データの変更も取り消されます。

●ポイント●
レコードを更新する場合、次の順番にイベントが発生します。
  BeforeUpdate → AfterUpdate

BeforeUpdateイベントは、レコードが更新される直前に発生します。AfterUpdateイベントは、レコードが更新された直後に発生します。AfterUpdateイベントのキャンセルはできません。