MasterDataset:Tadodataset;
DetailDataset:Tadodataset;Masterdataset对应着主表
DetailDataset对应着子表Masterdataet,DetailDataset的LockType为ltBatchOptimistic,其他的均为默认设置以下代码:
Connection.BeginTrans;;
try
Masterdataset.UpdateBatch(arall);
DetailDataset.UpdateBatch(arall);
Connection.CommitTrans;
except
Connection.RollbackTrans;
end;当DetailDataset的数据违反主键约束。为什么保存发生错误时没有发生事务的回滚呢。
也就是说Masterdataset和Detaildataset中的一部分数据被保存进了数据库,百思不得其解。
个人感觉这里的事务控制好象根本没有起作用一样,如同空设;
请大虾指教。
DetailDataset:Tadodataset;Masterdataset对应着主表
DetailDataset对应着子表Masterdataet,DetailDataset的LockType为ltBatchOptimistic,其他的均为默认设置以下代码:
Connection.BeginTrans;;
try
Masterdataset.UpdateBatch(arall);
DetailDataset.UpdateBatch(arall);
Connection.CommitTrans;
except
Connection.RollbackTrans;
end;当DetailDataset的数据违反主键约束。为什么保存发生错误时没有发生事务的回滚呢。
也就是说Masterdataset和Detaildataset中的一部分数据被保存进了数据库,百思不得其解。
个人感觉这里的事务控制好象根本没有起作用一样,如同空设;
请大虾指教。
解决方案 »
- 怎么POST此格式的数据类型啊。
- 求助~~delphi 最简单的3层结构~~纠结了2天了!!!!求大侠!!!!
- adoQuery连接sql server2000的一个奇怪问题
- 我写的三层模型程序,采用MultiInstance和Apartment模式,可是有问题,请各位多帮忙!急用!!
- 在应用程序中如何屏蔽掉 CTRL,SHIFT键!?
- ★★紧急任务!!!请问有没有能把Delphi转换为C++的软件?100分相送知情人!★★(老鱼)
- DELPHI+SQL SERVER怎样设置TADOConnection的参数?
- 如何把文件做为附件,保存到数据库里,就像发邮件的附件一样
- ===常量定义
- 大仙,怎样把含有Timage类型数据的表中的数据导到word中,我用ole,tring类型的数据能写入,TImage类型的是乱码,怎么办?急切求教!!
- psapi.dll能否在WIN98下调用?
- 关于 DELPHI 7 中的 OFFICE 对象
在afterpost中写下dataset1.committrans
再试试看
在afterpost中写下dataset1.committrans
再试试看
------------------------
to DragonBill
请问
Connection.BeginTrans;;
try
..............
Connection.CommitTrans;
except
Connection.RollbackTrans;
end;
还要吗?
请继续解答
try
Masterdataset.UpdateBatch(arall);
DetailDataset.UpdateBatch(arall);
except
Connection.RollbackTrans;
exit;
end;
Connection.CommitTrans;如果把Connection.CommitTrans;放在exceppt前面,那不是不管怎样都提交了嘛。
try
Masterdataset.UpdateBatch(arall);
DetailDataset.UpdateBatch(arall);Connection.CommitTrans;
except
Connection.RollbackTrans;
exit;
end;
try
BEGIN
dm.adoconnection1.CommitTrans;
except
dm.adoconnection1.RollbackTrans;
end;
是的
最好是单步跟踪看看有没有,看看保存主表数据是不是 执行connection1.CommitTrans,导致的
try
.....
Execsql;
if errors.count = 0 then
committrains
else
rollbacktrains;
excetp
rollbacktrains;
end;