例子没有打完整,重新打一下==============
   sub test()
     on error goto dealerr
     conn.BeginTrans '开始事务
       conn.execute "*****" '正确的sql
       conn.execute "*****" '会发生错误的sql
     conn.committrans ‘提交事务
   exit sub
   dealerr:
     conn.rollbacktrans ‘退回事务
     resume next
   end sub
'=================

解决方案 »

  1.   

    conn.rollbacktrans ‘退回事务
         resume next
    问题就出在这个resume next上,把这个去掉就行了你想,如果某句出错,事务已经rollback了,你又resume next接着往下运行,如果后面的运行成功了,那还会碰到commitrans,这时候就发生没有活动事务的错误了,假如执行失败,又会rollback,这还是没有活动事务的错误反正把resume next去掉就对了
      

  2.   

    而且resume next后返回执行的语句就不受事务控制了事物本身的目的,就是要保证Begintrans和committrans之间的操作要么都成功,要么都不做,出了错就该取消运行。