请各位高手看看如下事务控制是否可行,谢谢!!
try
  //开始事务
  adoconnection.BeginTrans;
  //保存主表信息(比如入库单)
  AdoQuery2.close;
  AdoQuery2.Sql.Clear;
  AdoQuery2.Sql.Add('insert Table1......'); 
  AdoQuery2.Execsql; 
  //保存附表信息(比如入库单明细)
  ADOQuery1.UpdateBatch(arAll);
  //更新成功,提交事务
  adoconnection.CommitTrans
except
  //更新失败,回滚事务
  adoconnection.RollBack;
end;还有就是ADOQuery1.UpdateBatch(arAll)命令的本质是什么??

解决方案 »

  1.   

    if not adoconnection.InTransaction then
                  adoconnection.BeginTrans;arAll   把所有数据的修改更新回数据库中
      

  2.   

    楼上
     adoconnection.InTransaction=false就是该连接没有正在运行的事务吧!
      

  3.   

    我觉得应该这样 //开始事务 
    adoconnection.BeginTrans; 
    try 
      //保存主表信息(比如入库单) 
      AdoQuery2.close; 
      AdoQuery2.Sql.Clear; 
      AdoQuery2.Sql.Add('insert Table1......'); 
      AdoQuery2.Execsql; 
      //保存附表信息(比如入库单明细) 
     // ADOQuery1.UpdateBatch(arAll); 
      //更新成功,提交事务 
      adoconnection.CommitTrans 
    except 
      //更新失败,回…
     adoconnection.RollBack; 
    end; 
      

  4.   

    3楼:
      把adoconnection.BeginTrans放在TRY外面后什么区别或讲究吗?