定义了一个业务信息InfoA,包含两个主从数据集dsMain和dsDetials,在程序中代码定义了另外两个数据集dsData和dssData,定义了事务如下:
with dsMain..Connection.Transaction do
begin
lTransaction := Start(false);
try
dsMain.Edit; //编辑主数据集
while not dsDetials.EOF do
begin
dsDetials.Edit; //编辑从数据集
dsData.Edit; //编辑dsData
dssData.Edit; //编辑dssData
end;
dsMain.ApplyUpdate(true);
Commit(lTransaction);
except
Rollback(lTransaction);
end;
结果是:当dsData出错时,所有数据集回滚,但当dssData出错时,dsMain,dsDetials,dssData回滚,dsData没有回滚,请问如何解决这个问题。