|
这个问题我也想了好久,最后是用ado和事务解决的
在Form_Load时开始事务
然后再在ado的recordset上加一个事件监听如:
' rstChild 是ado 在子窗体上的一个recordset
' xxx_FieldChangeComplete是recordset的一个事件
' 当recordset的某个field发生改变是这个事件将会执行,接下来看就简单了
Private Sub rstChld_FieldChangeComplete(ByVal cFields As Long, _
ByVal Fields As Variant, _
ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
On Error GoTo ErrHandler
bolIsEdt = True ‘ 这是一个全局变量,当某个Field改变后把它设为True(本来是false)
Exit Sub
ErrHandler:
Call GoFunction.ErrProcess(1,Err) ' 这是一个错误处理的东东
Exit Sub
End Sub
最后在Form_OnLoad里MsgBox一下 如果选择保存而且bolIsEdt = True就CommitTrans
否则不管bolIsEdt都RollBack
应该说很麻烦,不过希望能帮你,有什么其他好办法记得说来听听 |
|