Option Explicit
 
Private Sub cmdApply_Click()
    With DBEngine(0): .CommitTrans: .BeginTrans: End With
End Sub
 
Private Sub cmdCancel_Click()
    DBEngine.Rollback
    DoCmd.Close acForm, Me.Name
End Sub
 
Private Sub cmdOK_Click()
    DBEngine(0).CommitTrans
    DoCmd.Close acForm, Me.Name
End Sub
 
Private Sub Form_Close()
On Error Resume Next   ' might have commited on [OK]
    DBEngine(0).Rollback
End Sub
 
Private Sub Form_Load()
    With Me.subData.Form
        Set .Recordset = DBEngine(0)(0).OpenRecordset( _
            .RecordSource, _
            dbOpenDynaset)
    End With
    DBEngine(0).BeginTrans
End Sub