2012-01-11 97 views
2

我是一名实习生,为我公司所在的新市场制作账单数据库。我创建了所有表格,并且已经设置了一种自动方式来抓取和导入数据。但是,导入的方法有点蛮力,不是很优雅,因为我只有2个星期的时间来处理它。在MS Access中记录错误和警告的方法

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

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

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

回答

3

您可以在每个相关过程的错误处理例程中写入大部分文本文件。您可能需要警惕更严重的错误,并与他们一起做其他事情。您也可能需要注意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

+1,你也可以采取类似这样的方法来写如果某人有背景访问权限查看它,则将错误发送到表格而不是文本文件。 – 2012-01-12 09:47:17

+0

@Matt我认为我会避免使用应用程序本身的原因有多种,包括找出崩溃之前记录的最后一件事情以及发送电子邮件文本文件的简单方法。 – Fionnuala 2012-01-12 11:21:52

+0

仅当应用程序是多用户环境时,这个想法才能让文本文件同时锁定在多个用户错误上? – 2012-01-12 11:56:29