●概要●
コントロールまたはレコードが更新される直前に発生します。イベントプロシージャは、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イベントのキャンセルはできません。