Microsoft Accessは、既定でフォームをデータにバインドし、レコード間を移動するか、作業中のフォームを閉じると自動的にデータを保存します。普通のユーザーにとっては、編集後に誤ってフォームを閉じたとしても、データを失うことが非常に困難になるため、これは実際には良いことです。
この機能を探していない場合は、フォームからバインディングを削除すること、つまりレコードソースプロパティを空白に設定してから、バインドされていないコントロールを使用してコード内のすべてのデータを操作することをおすすめします。それははるかに面倒ですが、より多くのコントロールを提供します。
もう1つのオプションは、フォームのBeforeUpdateイベントを使用して、変更を保存するかどうかをユーザーに問い合わせてから、変更を許可することです。
主な関心事が誤って新しいレコードを追加している場合は、Allow Additionsプロパティをfalseに設定し、プログラムで新しいレコードを作成します。
BeforeUpdateイベントプロシージャ(同じコードがBeforeInsertイベントのために働くだろう)のサンプル:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim intAns As Integer
intAns = MsgBox("Are you sure you want to save this record?", vbQuestion + vbYesNo, "Save Record")
If intAns = vbNo Then Cancel = 1
End Sub
あなたは上記の方法を使用した、ユーザーが「いいえ」をクリックした場合、彼らが持っているでしょうESCキーを押して、入力した変更を元に戻します。さもなければ、彼らはレコードを離れて移動したときにダイアログを表示し続けるでしょう。
本当にありがとうございました。私が理解しようとしていたものです。あなたが言及したBeforeUpdateメソッドを使用するかもしれません。再度、感謝します! – JasonR
BeforeUpdateフラグを使用する場合、そのイベントを使用してDBに新しいデータを追加する最も良い方法は何でしょうか? – JasonR
私は、役立つかもしれないBeforeUpdateイベントプロシージャのサンプルを追加しました。 BeforeInsertイベントプロシージャに同じコードを使用すると、新しいレコードを追加する前にユーザーに確認することができます。どちらの場合も、ユーザーが「いいえ」を選択した場合、ESCキーを使用して変更を元に戻すまで、レコードから移動することはできません。 新しいレコードを追加する場合は、コマンドボタンを使用して一時的にフォームのDataEntryプロパティをtrueに変更することを検討してください。それを正しくすることはもう少し複雑です。 – Billious