各位大侠:
我用下列语句,写程序数据库,会偶尔提示,没有活动的事务,请指点:特急,谢谢
datamodule2.ADOConnection1.BeginTrans;
 try
语句片段
   datamodule2.ADOConnection1.CommitTrans;//执行事务
 except 
        on   E:   Exception   do 
        begin 
            datamodule2.ADOConnection1.RollbackTrans;   //事务异常则回滚
            ShowMessage(E.Message);
            Exit; 
        end; 
        end;      // 事务结束

解决方案 »

  1.   

    datamodule2.ADOConnection1.BeginTrans; 
    try 
    语句片段 
      datamodule2.ADOConnection1.CommitTrans;//执行事务 
    应该是有时你这段语句片段中没的执行修改的语句
      

  2.   

    语句上看不出来什么问题,看看其它代码部分
    adoconnection1.begintrans;
    try
      ............
      ADOConnection1.CommitTrans;//执行事务
    except
      ADOConnection1.RollbackTrans;
    end;
      

  3.   

    事务回滚前先判断连接是否还在事务处理中:
    if datamodule2.ADOConnection1.intransaction then datamodule2.ADOConnection1.RollbackTrans
      

  4.   

    if not datamodule2.ADOConnection1.InTransaction then datamodule2.ADOConnection1.BeginTrans;
      

  5.   


    try
      try
       //开始事务
       //处理数据...
       //提交事务
      except
        if 在事务中 then
          回滚
      end;
    finally
      if 在事务中 then
        回滚
    end;