DataMod.adoConn.BeginTrans;
try
if adoMain.LockType =ltOptimistic then
adoMain.Post
else if adoMain.LockType =ltBatchOptimistic then
adoMain.UpdateBatch(arAll);
DataMOd.adoConn.CommitTrans;
except on E:Exception do
begin
DataMod.adoConn.RollbackTrans;
DBGridEhMain.Refresh;
if IsAborted=False then
begin
myShowErr('保存数据时失败!原因:' + #13 + E.Message );
end;
exit;
end;
end;假设共有3条记录被新增,
如上,adoMain 是ltBatchOptimistic型的游标,只要我的数据出现过一次错误,被 Except 后的语句堆截获,那么,前面加入的两条记录不会被保存到数据库(DBGrid上有3条,关闭窗体再进来就只一条记录)!!
经试这多次都是这样,但是,如果数据一直都正确,就会全部写入数据库。
try
if adoMain.LockType =ltOptimistic then
adoMain.Post
else if adoMain.LockType =ltBatchOptimistic then
adoMain.UpdateBatch(arAll);
DataMOd.adoConn.CommitTrans;
except on E:Exception do
begin
DataMod.adoConn.RollbackTrans;
DBGridEhMain.Refresh;
if IsAborted=False then
begin
myShowErr('保存数据时失败!原因:' + #13 + E.Message );
end;
exit;
end;
end;假设共有3条记录被新增,
如上,adoMain 是ltBatchOptimistic型的游标,只要我的数据出现过一次错误,被 Except 后的语句堆截获,那么,前面加入的两条记录不会被保存到数据库(DBGrid上有3条,关闭窗体再进来就只一条记录)!!
经试这多次都是这样,但是,如果数据一直都正确,就会全部写入数据库。
解决方案 »
- paradox 7 里面有没有日期时间型数据类型
- 出现Dataset not in edit or insert mode我不需要插入或编辑数据
- Fast Report中如何打印自定义数组?
- 用DELPHI写的一个DLL,用DELPHI写的程序调用,可以有返回值,可用CB++确不能得到返回结果.
- 心情不爽来放点血(3)
- 数据窗体没有application属性,如何.......
- 请问各位高手一个数据库错误。
- copyrect(rect,canvas,rect)有什么用呢
- 说我没有尚未调用Coinitialize,问高手!
- 哪位帮忙给我说一下TNMFTP的用法,先谢谢了!
- 请教:用delphi能否自动创建access表
- 用idhttp post数据的问题
try
DataMod.adoConn.BeginTrans;
if adoMain.LockType =ltOptimistic then
adoMain.Post
else if adoMain.LockType =ltBatchOptimistic then
adoMain.UpdateBatch(arAll);
DataMOd.adoConn.CommitTrans;
except on E:Exception do
begin
DataMod.adoConn.RollbackTrans;
DBGridEhMain.Refresh;
if IsAborted=False then
begin
myShowErr('保存数据时失败!原因:' + #13 + E.Message );
end;
exit;
end;
end;
经测试,故障依然!
////////////////////////
一、表结构
DepartNO(主键) DepartName二、测试方法1、先输入
DepartNO(主键) DepartName
01 计算机系
01 英语系2、保存,系统提示出错
3、把英语系的 01 改为 02
4、再保存
系统提示保存成功。5、关闭窗体,再进入,发现上一次新增的记录(不管新增多少条)系统总是只保存最后一条(如本例的02 英语系)。当然,以前的旧记录系统不会删除。另外,我测试了
adoMain.CancelBatch(arAll);
adoMain.CancelBatch();都一样的出现如题所说的问题。adoMain是一个 adoDataset,语句为:
Select * from bs_Depart adoMain.CursorType:=ctKeyset;
adoMain.LockType:=ltBatchOptimistic;