VB错误处理中心过程,写数据库日志表或写日志文件


Public Sub ShowError(strModule As String, strProcedure As String, lngErrorNumber As Long, strErrorDescription As String, showMsg As String)
    '
    '错误处理中心过程,写数据库日志表或写日志文件
    '
    'strModule           '模块名称
    'strProcedure        '过程名称
    'lngErrorNumber      '错误ID号
    'strErrorDescription '错误描述
    'showMsg             '是否显示本过程内错误显示信息(值:"Y" or "N")
   
    'Error表结构(f001 (Date)发生时间,    f002 (nvarchar50)模块名称, f003 (nvarchar50)过程名称, f004 (nvarchar50)错误ID号, _
                 f005 (nvarchar300)错误描述,f006 (nvarchar50)版 本 号, f007 (nvarchar50)用户名称, f008 (nvarchar50)网卡地址
    'ErrorCode表结构 f001 (nvarchar20)错误代码,  f002 (nvarchar255)错误信息, f003 (numeric9)错误级别
    '         级别说明: '10'以下,一般错误,不影响操作
    '                   '11-20',严重错误,不能操作,程序执行退出
   
    On Error GoTo ErrorHandle
    Dim strMessage As String
    Dim strCaption As String
    Dim sVer As String
    Dim intLogFile As Integer
    Dim Res As New ADODB.Recordset
    Dim ResErrorCode As New ADODB.Recordset
    Dim strSQL As String
   
    '对应错误号,从ErrorCode表中找到对应的错误信息,0-1000 错误号保留给VB
    DBOpen ResErrorCode, "select * from errorcode where f001='" & lngErrorNumber & "'"
    If Not (ResErrorCode.EOF Or ResErrorCode.BOF) Then
        strMessage = ResErrorCode.Fields("f002")
        If ResErrorCode.Fields("f003") > 10 Then
            MsgBox "产生一个严重错误,可能影响到系统的可操作性,请立即联系本系统开发人员!", vbCritical, "严重错误"
        End If
    End If
         
    '写错误入文件----------------------------
   
    intLogFile = FreeFile
    Open App.Path & "/" & strIni.LogFile For Append As #intLogFile
    Print #intLogFile, "***错误"; VBA.Now & "*** " & "Version:" & _
          str$(App.Major) & "." & str$(App.Minor) & "." & Format(App.Revision, "0000")
    Print #intLogFile, "Error: " & lngErrorNumber
    Print #intLogFile, "Description: " & strErrorDescription
    Print #intLogFile, "Module: " & strModule
    Print #intLogFile, "Procedure: " & strProcedure
    Print #intLogFile, ""
    Close #intLogFile
   
    If Len(strMessage) > 2 Then strErrorDescription = strMessage
   
    strMessage = "错误: " & "(" & lngErrorNumber & ")" & strErrorDescription & vbCrLf & vbCrLf & _
                 "模块:" & strModule & ";  过程:" & strProcedure

    sVer = Trim(str$(App.Major) & "." & str$(App.Minor) & "." & _
                 Format(App.Revision, "0000"))
    strCaption = "错误 Version: " & sVer
                          
    '写错误入数据库表--------------------------
    strSQL = "insert into error(f001,f002,f003,f004,f005,f006,f007,f008) values(" _
                & DateFmtB & VBA.Now & DateFmtE & "," _
                & IIf(Len(Trim(strModule)) = 0, "null", "'" & strModule & "'") & "," _
                & IIf(Len(Trim(strProcedure)) = 0, "null", "'" & strProcedure & "'") & "," _
                & IIf(Len(Trim(lngErrorNumber)) = 0, "null", "'" & lngErrorNumber & "'") & "," _
                & IIf(Len(Trim(strErrorDescription)) = 0, "null", "'" & Replace(strErrorDescription, "'", "") & "'") & "," _
                & IIf(Len(Trim(sVer)) = 0, "null", "'" & sVer & "'") & "," _
                & IIf(Len(Trim(sUserName)) = 0, "null", "'" & sUserName & "'") & "," _
                & IIf(Len(Trim(sVer)) = 0, "null", "'" & EthernetNO & "'") & ")"
         
  
    Cn.Execute strSQL
        
    '是否显示未知错误信息
    If Trim(UCase(showMsg)) = "Y" Then MsgBox strMessage, vbCritical, strCaption
   
PROC_EXIT:
    Set Res = Nothing
    Set ResErrorCode = Nothing
    Exit Sub
ErrorHandle:
    Resume Next
End Sub
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值