Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 在MS Access中记录错误和警告的方法_Ms Access_Vba_Ms Access 2007 - Fatal编程技术网

Ms access 在MS Access中记录错误和警告的方法

Ms access 在MS Access中记录错误和警告的方法,ms-access,vba,ms-access-2007,Ms Access,Vba,Ms Access 2007,我是一名实习生,正在为我的公司所在的新市场制作账单数据库。我已经创建了所有的表,并设置了一种自动获取和导入数据的方法。然而,导入的方法是一种蛮力,不是很优雅,因为我只有大约2周的时间来处理它 我已将数据库中设置的表链接到CSV文件 我有一些追加查询,这些查询将向现有表中添加新记录。对于重复条目会引发警告,但可以忽略这些警告 我的公司想要做的是每天运行一个我创建的程序来下载这些报告,以大约30天的滚动间隔。然后将任何新记录添加到Access数据库中 因为我很快就要离开了,所以我没有时间测试这个数据

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

  • 我已将数据库中设置的表链接到CSV文件
  • 我有一些追加查询,这些查询将向现有表中添加新记录。对于重复条目会引发警告,但可以忽略这些警告
  • 我的公司想要做的是每天运行一个我创建的程序来下载这些报告,以大约30天的滚动间隔。然后将任何新记录添加到Access数据库中


    因为我很快就要离开了,所以我没有时间测试这个数据库,并且希望有一些记录抛出的错误和警告的方法;从重复条目警告到类型不匹配错误,或某些SQL查询中的语法错误。这可能吗?如果可能,你认为最有效的方法是什么?也许在我的导入宏运行时打开一个错误处理函数?如果有帮助,我们正在Access 2007中工作。

    您可以在每个相关过程的错误处理例程中写入文本文件。您可能需要注意更严重的错误,并对其采取其他措施。您可能还需要注意DAO错误,这与代码错误()不完全相同。您可能还希望提出其他错误:

    Err.Raise vbObjectError + 100
    
    见:


    更多信息:

    +1,如果有人有后台访问权限查看错误,您也可以采用类似的方法将错误写入表而不是文本文件。@Matt我想我会避免使用应用程序本身,原因有几个,包括找出在它崩溃之前记录的最后一件事,以及通过电子邮件发送文本文件的简单性。只是如果应用程序是一个多用户环境,文本文件会同时锁定在多个用户错误上吗?@Matt我不知道,但我想这是可能的,但是如果你有这么多用户和这么多错误,我想你比文本文件锁定更需要担心。
    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