#296 1レコードずつ保存確認メッセージを表示する方法 フォーム、VBA

Accessでは、テーブルもクエリもフォームも、レコード移動によって自動的にデータが保存されます。一方、フォームにおいては、フォームの"BeforeUpdate/更新前処理"イベントプロシージャを利用することによって、ユーザーに確認後、レコードをそのまま保存するか更新をキャンセルするかを指定するといったことができます。イベントプロシージャの引数である「Cancel」にプロシージャ内で"True"を代入することによって更新をキャンセルできます。

しかし、"Cancel = True"とするだけでは、引き続き再入力する状態となってしまい、いつまでたってもそのレコードに対する編集を抜け出すことができません。そこで、「Undo」メソッドを実行することによって、そのレコードに対するそれまでのすべての編集をキャンセルし、更新前の状態まで戻します。これはちょうどEscキーを押したのと同じ操作となります。

以下のコードによって、あるレコードに編集を加えると、別のレコードに移動しようとするたびに保存確認のメッセージが表示されるようになります。
Private Sub Form_BeforeUpdate(Cancel As Integer)

  Beep
  If MsgBox("レコードが更新されています! データを保存しますか?", _
            vbYesNo + vbQuestion) = vbNo Then
    Me.Undo
    Cancel = True
  End If

End Sub
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved