为了更好的维护和完善程序,想每次把错误记录下来,包括时间,和提示错误信息。
如题,谢谢!

解决方案 »

  1.   

    用FSO 记录,
    你可以写一个函数专门记录错误。
    用FSO写到一个文件中,命名为X.log
      

  2.   

    用fileopen就可以做了
    Open 文件位置 For Append AS #1
        Print #1,错误信息
    Close #1
    Output方式会覆盖原来内容,所以用Append
    文件号最好动态生成,以免和错误代码未关闭的文件号冲突我个人的理解,仅供参考
      

  3.   

    最简单的
    使用app
    的LogEvent 方法
          在应用程序的日志目标中,把某个事件记入日志。在 Windows NT 平台上,该方法会把内容写到 NT 的 Event 日志中。在 Windows 95 平台上,该方法会把内容写到 LogPath 属性指定的文件中。按照缺省规定,如果不指定文件,事件被写入 vbevents.log 文件。语法object.LogEvent (logBuffer, eventType)部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    logBuffer 必需的。写到日志中的字符串。 
    eventType 可选的。Long 整数,它指定了事件的类型,如下列“设置值”中所示。 
    设置值eventType 的设置值是:常数 值 描述 
    vbLogEventTypeError 1 错误。 
    vbLogEventTypeWarning 2 警告。 
    vbLogEventTypeInformation 4 信息。 
    说明可以在 Win32 SDK 中得到记入日志的准则,不管是记入到 NT 的 Event 日志中,还是(在 Windows 95 平台上)记入到 LogPath 属性所指定文件,都应该遵守那些准则。
      

  4.   

    我用的两个函数,就是这么做的。在程序中的调用方式:sub command1_click()    on error goto aErr
     
        ....  '这是代码段    exit subaErr:
       
        if err.number=1988 then  '能检测处理错误号
        showError "发生xxxxx错误,请检查xxx!"
        else
        showError 
        end ifend sub
    '**显示错误信息框
    '如果传递了错误提示文本,直接显示 msgbox ;否则将错误写入 .log 文件,然后显示错误vb的提示
    Sub ShowError(Optional ByVal msgText As String)
        If len(msgText) = 0 Then
            msgText = Err.Description & "。"
            ProgramErrLog "时间:" & Date & " " & Time & vbCrLf & "代号:" & Err.Number & vbCrLf & "描述:" & msgText & vbCrLf
            Err.Clear
        End If
        MsgBox msgText, vbOKOnly + vbCritical, "错误!"
    End Sub'写错误日志
    Private Sub ProgramErrLog(ByVal ErrText As String)
        
    On Error Resume Next    Dim logFile As String, fH As Integer
        logFile = replace(app.path & "\RunErr.log","\\","\")
        fH = FreeFile()
        
        If Dir(logFile) = "" Then
            Open logFile For Output As #fH
        Else
            Open logFile For Append As #fH
        End If
        
        Print #fH, ErrText
        
        Close #fH
       
    End Sub
      

  5.   

    汗!楼主拿到代码都不测试一下的?将上面的函数放到模块中,然后随便在哪里调用,比如按钮中:
    然后看看是什么反应,然后检查 app.path 中的 runerr.log 文件,是不是写入了内容。sub command1_click()    on error goto aErr
        
        dim a as byte
        a=1000   '这句会造成溢出,但我们不特意去捕获    exit subaErr:
       
        showError end sub
    showError 这个函数是自适应的。如果你不告诉它要显示什么错误,它就自动显示vb刚刚产生的错误;如果有些错误你需要告诉它,比如对象不能创建,你就给它传递一个参数文本。你可以修改它,任何时候都写日志(现在只对未知错误写 .log 文件)
      

  6.   

    就我的习惯,编写一个"类"来处理错误,给类一个日志位置就可以了.
    为了能让所有的模块使用,我写在专门的模块里.
    对于那些错误提示字符串,我写在资源文件了.
    当然编程的时候我不会马上写到资源文件里面去,而是编写一个列表,纸头上的或者EXCEL表格什么的,不用ACCESS,太规范.
      

  7.   

    日志存放地你改一下就行了,默认是应用程序所在目录。看这一句就是了:logFile = replace(app.path & "\RunErr.log","\\","\")你可以改成一个希望的路径。
      

  8.   

    汗,可能是我领悟能力比较低 不是把这段
    写错误日志
    Private Sub ProgramErrLog(ByVal ErrText As String)
        
    On Error Resume Next    Dim logFile As String, fH As Integer
        logFile = replace(app.path & "\RunErr.log","\\","\")
        fH = FreeFile()
        
        If Dir(logFile) = "" Then
            Open logFile For Output As #fH
        Else
            Open logFile For Append As #fH
        End If
        
        Print #fH, ErrText
        
        Close #fH
       
    End Sub粘贴后,好像在我程序路径下没有生产日志文件阿? 后来我按照上面的名字在程序目录下,自己建了一个好像还是不能写入?
     是不是我理解错了,谢谢
      

  9.   

    '**显示错误信息框
    '如果传递了错误提示文本,直接显示 msgbox ;否则将错误写入 .log 文件,然后显示错误vb的提示
    Sub ShowError(Optional ByVal msgText As String)
        If len(msgText) = 0 Then
            msgText = Err.Description & "。"
            ProgramErrLog "时间:" & Date & " " & Time & vbCrLf & "代号:" & Err.Number & vbCrLf & "描述:" & msgText & vbCrLf
            Err.Clear
        End If
        MsgBox msgText, vbOKOnly + vbCritical, "错误!"
    End Sub这段一旦加上,就说缺少END IF ?但是您的代码里面有阿?
      

  10.   

    两个要一起加,是一组函数。
    前面那个用来被调用,然后它在需要时会再调用后面这个函数写 .log 文件