大家好,为什么我这样写,dbgrid增加两条记录时,没有回滚呢?关于事务处理的!(15分)

  • 主题发起人 delphiere
  • 开始时间
D

delphiere

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在dbgrid中编辑和增加。由于dbgrid太免感了,没有保存,就已经存入数据库了。
所以我想通过一个按钮老保存,如果成功就提高事务,反之就回滚。
可这样写当dbgrid增加两条记录时,为什么会出现回滚到增加的第一条记录上去呢?而不是滚到
原先的最后一条记录呢?
procedure TForm1.Button1Click(Sender: TObject);
begin
adoconnection1.BeginTrans;//开始事务
if application.MessageBox('是否保存','提示',mb_yesno+mb_iconquestion)=idyes then
begin
adoconnection1.CommitTrans;//提高
adoquery1.Edit;
adoquery1.Post;
end
else
adoconnection1.RollbackTrans; //回滚!
adoquery1.CancelUpdates;

 
好像有点逻辑不对吧
揭交了,又Eidt
???
不是很明白
 
同意上面的老兄,逻辑错误
 
不是的,加上那一句没有错的,关键是else后面的问题,也就是当我不保存的时候,要回滚到
数据集的最后一条记录,增加和修改的几条记录不保存!
 
adoconnection1.BeginTrans;//开始事务
//写你的代码
if application.MessageBox('是否保存','提示',mb_yesno+mb_iconquestion)=idyes then
adoconnection1.CommitTrans//提交
else
adoconnection1.RollbackTrans; //回滚!
 
多人接受答案了。
 
顶部