2012-01-11 66 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