为了创建临时表
在创建过程之前调用了TADOConnection.BeginTrans
之后调用了TADOConnection.RollbackTrans删除临时表
可是报错!!
EOleException with message 'ITransaction::Commit or ITransaction::Abort was called,and object is in a zombie state
请高手指点这是怎么回事????
我在线恭候!!!

解决方案 »

  1.   

    事务用COMMIT提交了吗?
    procedure TForm1.TransferButtonClick(Sender: TObject);var  Amt: Integer;  TD: TTransactionDesc;begin  if not SQLConnection1.InTransaction then //如果目前不在一个事务中  begin    TD.TransactionID := 1;    TD.IsolationLevel := xilREADCOMMITTED;    SQLConnection1.StartTransaction(TD);    try      Amt := StrToInt(AmtEdit.Text);      Debit.Params.ParamValues['Amount'] := Amt;      Credit.Params.ParamValues['Amount'] := Amt;      SQLConnection1.Commit(TD); //一切顺利则递交    except       SQLConnection1.Rollback(TD); //发生任何错误则回滚    end;  end;end;
      

  2.   

    一个TADOConnection.BeginTrans只能对应一个Commit或者RollBack
      

  3.   

    可是我在TADOConnection.RollbackTrans之前并没有调用其它的
    CommitTrans或是RollbackTrans啊?????
      

  4.   

    请和我用qq讨论可以吗?
    4221350
    附言:TADOConnection的问题
      

  5.   

    adoConnection.BeginTrans;
    try
       //....
       adoConnection.CommitTrans;
    except
       adoConnection.RollbackTran;
    end;
      

  6.   

    我知道是什么原因了
    因为TADODataset的CursorType设成了crUseServer
    就是使用服务器端游标了
    而在事务TADOConnection.RollbackTrans之后
    临时表就不存在了
    当然就会报错了
    呵呵
    耽误了大家这么久,多谢了!!!:)