帮我分析代码:
  程序中有三个按钮  add  ok  cancel
 add 完成把数据放到缓存中,
 ok  递交数据库
 cancel  取消操作,滚回事务addClick  ADOConnection1.beginTrans;
  ADOTable1.updateBatch(arAll);
  with ADOTable1 do
  begin
    append;
    fieldbyname('bh').value:=edit1.text;
    fieldbyname('bz').value:=edit2.text;
  end;OKClick ADOTable1.post;
 ADOConnection1.CommitTrans;CancelClick ADOTable1.cancel;
 ADOConnection1.RollBackTrans;编译通过但运行时,进行如下操作出错
 1.add ->cancel->add
 就会出这样的错:事务:提交或事务调用了退出了,对象正处在超自然状态
 2.add->ok
 错误:多步OLEDB操作产生错误,请检查每个OLEDB状态值.没有工作被完成还得请高手指出我的错误

解决方案 »

  1.   

    方案一
    addClick
      ADOConnection1.beginTrans;
      ADOTable1.updateBatch(arAll);
      with ADOTable1 do
      begin
        append;
        fieldbyname('bh').value:=edit1.text;
        fieldbyname('bz').value:=edit2.text;
      end;
      ADOTable1.post;
    OKClick
     ADOConnection1.CommitTrans;
    CancelClick
     ADOConnection1.RollBackTrans;
    方案二
    addClick
      ADOTable1.updateBatch(arAll);
      with ADOTable1 do
      begin
        append;
        fieldbyname('bh').value:=edit1.text;
        fieldbyname('bz').value:=edit2.text;
      end;
    OKClick
     ADOTable1.post;
    CancelClick
     ADOTable1.cancel;
      

  2.   

    换个驱动程序吧,一班是它的问题,我在实际开发中遇到过,比如oracle的,用微软的就不行,要用oracle自己的
      

  3.   

    你可能要改一下:
    BDE Aministrator\Aliases\SQLPassThru Mode的
    Shared AutoCommit改为 
    Shared NoAutoCommit
      

  4.   

    捕获执行CommitTrans的异常
    一般要做什么处理?