【问题标题】:Method for logging errors and warnings in MS Access在 MS Access 中记录错误和警告的方法
【发布时间】:2012-01-11 16:53:57
【问题描述】:

我是一名实习生,正在为我公司所在的一个新市场创建一个计费数据库。我已经创建了所有表,并设置了一种自动获取和导入数据的方法。但是,导入的方法有点暴力,也不是很优雅,因为我只有大约 2 周的时间来处理它。

  1. 我已将数据库中设置的表链接到 CSV 文件
  2. 我有将新记录添加到现有表的附加查询。重复条目会引发警告,但可以忽略。

我的公司想做的是每天运行一个我创建的程序来下载这些报告,滚动间隔约为 30 天。然后将任何新记录添加到 Access 数据库中。

由于我即将离开,我没有时间测试这个数据库,并且希望有一些方法来记录引发的错误和警告;从重复条目警告到类型不匹配错误或某些 SQL 查询中的语法错误。这可能吗?如果可以,您认为最有效的方法是什么?也许在我的导入宏运行时打开一个错误处理功能?如果有帮助,我们正在使用 Access 2007。

【问题讨论】:

    标签: ms-access vba ms-access-2007


    【解决方案1】:

    在大多数情况下,您可以在每个相关过程的错误处理例程中写入文本文件。您可能需要注意更严重的错误并对其进行其他处理。您可能还需要注意 DAO 错误,这与代码错误 (http://office.microsoft.com/en-us/access-help/HV080753531.aspx) 不太一样。您可能希望自己提出其他错误:

    Err.Raise vbObjectError + 100
    

    见:http://msdn.microsoft.com/en-us/library/aa241678(v=vs.60).aspx

    LogError (ErrNo & " " & ErrDescr & " " & ErrInfo)
    
    Sub LogError(strError)
    Const ForAppending = 8
    Dim strPath As String
    Dim fs As Object
    Dim a As Object
    
        strPath = GetDataDirectory
    
        Set fs = CreateObject("Scripting.FileSystemObject")
        If fs.FileExists(strPath & "\ErrorLog.txt") = True Then
            Set a = fs.OpenTextFile(strPath & "\ErrorLog.txt", ForAppending)
        Else
            Set a = fs.createtextfile(strPath & "\ErrorLog.txt")
        End If
        a.WriteLine Date + Time & " " & strError
        a.Close
    
        Set fs = Nothing
    End Sub
    

    更多信息:http://msdn.microsoft.com/en-us/library/bb221208(v=office.12).aspx

    【讨论】:

    • +1,如果有人有后台查看权限,您也可以采用类似的方法将错误写入表格而不是文本文件。
    • @Matt 我想我会避免使用应用程序本身有几个原因,包括找出在它崩溃之前记录的最后一件事以及通过电子邮件发送文本文件的简单性。
    • 想一想,如果应用程序是多用户环境,文本文件是否会同时锁定多个用户错误?
    • @Matt 我不知道,但我想这是可能的,但是如果您有这么多用户和这么多错误,我认为您需要担心的不仅仅是文本文件锁定。跨度>
    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多