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