俺用DBExpress连SQL SERVER2000
作多个update动作.
俺一把这些update 放入事务就抱错: no active transaction.
var 
  aTD:TTransactionDesc;
begin
  aTD.TransactioID:=1;
  aTD.IsolationLevel:=xilREADCOMMITTED;
  self.SQLConnection.StartTransaction(aTD);
try{
   update...
   update...
   
}
except
   self.SQLConnection1.RollBack(aTD);
end;
  commit;不用事务就OK.
郁闷死了.
望大虾提点.
谢谢!

解决方案 »

  1.   

    var 
      aTD:TTransactionDesc;
    begin
      aTD.TransactioID:=1;
      aTD.IsolationLevel:=xilREADCOMMITTED;
    self.SQLConnection1.Open;//加上这句话试试
      self.SQLConnection.StartTransaction(aTD);
    try{
       update...
       update...
       
    }
    except
       self.SQLConnection1.RollBack(aTD);
    end;
      commit;
      

  2.   

    但是俺的connection没关过啊!
    在事务之前有其他SQL语句运行啊
      

  3.   

    你最后的commit是commit什么东西的?事务?
      

  4.   

    要是出了异常,你先执行  rollback,   再执行  commit
    你自己说,  这样会不会错。
      

  5.   

    to: 楼上.
    是俺在写问题时写错了,实际情况是commit 在try ..except 里.
    to : 2F.
    俺加了self.SQLConnection1.Open;还是报同样的错啊.
    大家加把劲集思广益啊
      

  6.   

    >> aTD.IsolationLevel:=xilREADCOMMITTED;
    檢查下這個參數
      

  7.   

    aTD.IsolationLevel:= xilREPATABLEREAD;
    ???
      

  8.   

    to: aiirii(ari-爱的眼睛) 
    xilREADCOMMITTED是IsolationLevel的默认值.
    aTD.IsolationLevel:= xilREPATABLEREAD级别的隔离俺也试过,问题一样.
    检查what? 请明示.to: all.
    请大家不要在拼写上挑错,问题中的拼写可能会有误.