我用Delphi6开发C/S架构的系统时,涉及到了多表更新,
在数据模块上放置了三个控件:ADOConn:TADOConnection,qryMain:TADOQuery,qryDetail:TADOQuery
qryMain的数据用TDBEdit显示,qryDetail的数据用TDBGrid显示,
在进行新增或修改时,启动了一个事务:
ADOConn.BeginTrans;
当修改完毕后,提交事务:
ADOConn.CommitTrans;
现在的问题是:
当我提交事务后,刷新数据集,则刚才的新增或修改均丢失,请问这里可能的原因是什么?我搞了半天,还没找出来。
(以前我用过事务处理,均是独立的TADOQuery在后台处理,没有与数据显示控件相关联)
下面是ADOConn的属性设置:
object ADOConn: TADOConnection
ConnectionString =
'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In' +
'fo=False;Initial Catalog=HKCN;Data Source=hudson'
IsolationLevel = ilReadUncommitted
LoginPrompt = False
Provider = 'SQLOLEDB.1'
Left = 32
Top = 24
end
在数据模块上放置了三个控件:ADOConn:TADOConnection,qryMain:TADOQuery,qryDetail:TADOQuery
qryMain的数据用TDBEdit显示,qryDetail的数据用TDBGrid显示,
在进行新增或修改时,启动了一个事务:
ADOConn.BeginTrans;
当修改完毕后,提交事务:
ADOConn.CommitTrans;
现在的问题是:
当我提交事务后,刷新数据集,则刚才的新增或修改均丢失,请问这里可能的原因是什么?我搞了半天,还没找出来。
(以前我用过事务处理,均是独立的TADOQuery在后台处理,没有与数据显示控件相关联)
下面是ADOConn的属性设置:
object ADOConn: TADOConnection
ConnectionString =
'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In' +
'fo=False;Initial Catalog=HKCN;Data Source=hudson'
IsolationLevel = ilReadUncommitted
LoginPrompt = False
Provider = 'SQLOLEDB.1'
Left = 32
Top = 24
end
ADOconn.BeginTrans
adoquery1.edit
..
adoquery1.post;
ADoconn.commitTrans;
except
adoconn.rollback;
end;
但它没有提示异常,表示正常提交了,为什么数据还是没有保存下来?
是不是ADOConnection的什么属性设置会导致这种现象?
比如IsolationLevel属性。
而且两个ADOQuery上都有计算字段。