没有errout: 后面的语句程序正常运行可是即使前面“ On Error GoTo errout”
正常运行后面的语句也被执行了实时错误 '-2147168242 (8004d00e)'
没有活动事务。
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +     Public Function insertNote(ByVal sql As String) As Boolean
 Dim sqlStr As String
 
 On Error GoTo errout
   sqlStr = Trim(sql)
   DBcnn.Execute sqlStr
   DBcnn.CommitTrans
   insertNote = True
   
errout:
   DBcnn.RollbackTrans   '出错,回滚事务
   MsgBox "操作失败,错误原因为:" & Err.Description, vbExclamation, "提示"
   insertNote = False
   Exit Function
  
End Function

解决方案 »

  1.   

    Public Function insertNote(ByVal sql As String) As Boolean
     Dim sqlStr As String
      
     On Error GoTo errout
      sqlStr = Trim(sql)
      DBcnn.BeginTrans   '开始事务
      DBcnn.Execute sqlStr
      DBcnn.CommitTrans
      insertNote = True
      Exit function       ‘退出FUNCTION
    errout:
      DBcnn.RollbackTrans '出错,回滚事务
      MsgBox "操作失败,错误原因为:" & Err.Description, vbExclamation, "提示"
      insertNote = False
    End Function不过个人感觉你这个DBcnn.Execute sqlStr 不需要用到事务。
      

  2.   

    把transaction control加到存储过程中。
      

  3.   

    Public Function insertNote(ByVal sql As String) As Boolean
     Dim sqlStr As String
      
     On Error GoTo errout
      sqlStr = Trim(sql)
      DBcnn.Execute sqlStr
      DBcnn.CommitTrans
      insertNote = True
        
      Exit Function  '晕,这个没有加,无论是否出错都会执行下面的
    errout:
      DBcnn.RollbackTrans '出错,回滚事务
      MsgBox "操作失败,错误原因为:" & Err.Description, vbExclamation, "提示"
      insertNote = False
      Exit Function
       
    End Function
      

  4.   

    Public Function insertNote(ByVal sql As String) As Boolean
     Dim sqlStr As String
      
     On Error GoTo errout
      sqlStr = Trim(sql)
      DBcnn.BeginTrans   '开始事务,加这行  DBcnn.Execute sqlStr
      DBcnn.CommitTrans
      insertNote = True
      Exit function       ‘正常退出FUNCTION,加这行errout:
      DBcnn.RollbackTrans '出错,回滚事务
      MsgBox "操作失败,错误原因为:" & Err.Description, vbExclamation, "提示"
      insertNote = False
    End Function
      

  5.   

    Public Function insertNote(ByVal sql As String) As Boolean
     Dim sqlStr As String
      
     On Error GoTo errout
      sqlStr = Trim(sql)
      DBcnn.BeginTrans   '开始事务,加这行  DBcnn.Execute sqlStr
      DBcnn.CommitTrans
      insertNote = True
      Exit function       ‘正常退出FUNCTION,加这行errout:
      DBcnn.RollbackTrans '出错,回滚事务
      MsgBox "操作失败,错误原因为:" & Err.Description, vbExclamation, "提示"
      insertNote = False
    End Function
      

  6.   

    Public Function insertNote(ByVal sql As String) As Boolean
     Dim sqlStr As String
      
     On Error GoTo errout
      sqlStr = Trim(sql)
      DBcnn.BeginTrans   '开始事务,加这行
      DBcnn.Execute sqlStr
      DBcnn.CommitTrans
      insertNote = True
      Exit function       '正常退出FUNCTION,加这行
    errout:
      DBcnn.RollbackTrans '出错,回滚事务
      MsgBox "操作失败,错误原因为:" & Err.Description, vbExclamation, "提示"
      insertNote = False
    End Function