フォーム内にサブフォームがあります。既定では、サブフォーム内のレコードを変更すると、サブフォーム外をクリックするとレコードが自動的に保存されます。フォームとサブフォームに手動でレコードを保存するボタンをメインフォームに追加したので、サブフォーム出口で保存をキャンセルして書き込みの競合を回避しました。Access 2013のサブフォームの変更をキャンセルします。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.Undo
Cancel = True
End Sub
このコードでは、サブフォームの外側をクリックするだけで、保存がキャンセルされるだけでなく、サブフォームに入力したものもクリアされます。つまり、最初にサブフォームの変更を取り消すことなくフォームを保存することはできません。
サブフォームの自動保存をキャンセルして、メインフォームを終了するまで編集を続けるにはどうすればよいですか?
フォームに発生するすべてのデータイベントをトランザクションでラップし、フォームのイベントに基づいてトランザクションを明示的にコミット(またはロールバック)することもできます。 –
第4のオプション:切断されたレコードセットにフォームをバインドします。これにより、連続フォームを作成し、複数のレコードに対してコミットされていない値を保持し、明示的に書き込みまたは拒否することができます。切断されたレコードセットでは、ADOを使用する必要があります.ADOを使用する必要がある場合は素晴らしいですが、学習曲線が少しあります。 –