现在的问题是:
我需要把对数据进行的修改一起提交或不提交,
在修改之前我做了:
With BL_SrvCnt do
begin
if not InTransaction then
BeginTrans;
end;在保存之后我做了
With BL_SrvCnt do
begin
if not InTransaction then
BeginTrans;
CommitTrans;
end;现在我在DBGRID中移动时他总是自动POST
搞得数据总是即时被提交……
为什么?
怎么样解决?
我需要把对数据进行的修改一起提交或不提交,
在修改之前我做了:
With BL_SrvCnt do
begin
if not InTransaction then
BeginTrans;
end;在保存之后我做了
With BL_SrvCnt do
begin
if not InTransaction then
BeginTrans;
CommitTrans;
end;现在我在DBGRID中移动时他总是自动POST
搞得数据总是即时被提交……
为什么?
怎么样解决?
但我建议你使用edit组件,在用户按了保存后,再将edit.text赋值给
grid.filedbyname(''),再datasource.post.
提交方法用:ADOQuery.UpdateBatch
TQuery.CancelUpdates = true;提交方法用:TQuery.ApplyUpdate
不是ADOQUERY
请关注
请问我怎么样判断数据是否被修改了呢?
比如在进入DBGrid时开始,离开时结束.
判断数据是否被修改:TADODataSet.Modified属性
):
这样好象不行,
我有第一行改了一些数据,
再移动到下一行,
这样用它来判断就不行了……
在数据源的beforepost中不好控
你是要判断一行是否已修改?
没做过,不过TField有两个属性CurValue和OldValue,你可以试试
注意:CachesUpdates应为true
还有就是在提交之前判断(这个当然,呵呵)
因为我在改动过一行后移到另一行,
这时数据会被保存一次(但不会提交)
这样Modified 属性就不对了……如果要通过这个属性来判断的话,
只可能不让它自动保存……
这个问题有可能没有说清楚,
但我现在已经用另外的一种方法来做了,
效果还可以,
特别感谢 happyzsl(学习)……