#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'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved