2012-01-11 7 views
2

私は、私の会社がいる新しいマーケットの請求データベースを作成しているインターンです。私はすべてのテーブルを作成し、データをインポートします。しかし、インポートの方法は、私がそれに取り組むために2週間しかなかったので、非常にエレガントではないブルートフォースの一種です。MS Accessでエラーと警告を記録する方法

  1. 私は、既存のテーブルに新しいレコードを追加するクエリを追加してい
  2. CSVファイルをデータベースに設定したテーブルをリンクしています。重複したエントリに対して警告がスローされますが、それらは無視できます。

私の会社は毎日、約30日間の間隔でこれらのレポートをダウンロードするために作成したプログラムを実行しています。次に、新しいレコードをAccessデータベースに追加します。

すぐに出る予定ですので、このデータベースをテストする時間はありません。スローされたエラーと警告を文書化するいくつかの方法があります。重複したエントリの警告からタイプの不一致のエラー、または一部のSQLクエリの構文エラーのすべてこれが可能かどうか、もしそうなら、それについて最も効果的な方法は何だろうと思いますか?たぶん私のインポートマクロがエラー処理関数を開いて実行中ですか? Access 2007で作業しています。

答えて

3

ほとんどの場合、関連する各手順のエラー処理ルーチンでテキストファイルに書き込むことができます。もっと深刻なエラーを見て、他のことをする必要があるかもしれません。また、おそらくコードエラー(http://office.microsoft.com/en-us/access-help/HV080753531.aspx)と全く同じではなく、DAOエラーを注意する必要があります。あなた自身を上げることを望む他のエラーがあるかもしれません:

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、あなたも書き込みにこれと同様の方法を採用することができ誰かがそれを閲覧するためのバックグラウンドアクセス権を持っている場合、テキストファイルではなくテーブルへのエラー。 –

+0

@Matt私は、いくつかの理由でアプリケーション自体を使用することは避けたいと考えています。なぜなら、それが崩壊する前に記録された最後のものを見つけること、およびテキストファイルを電子メールで送信することの単純さです。 – Fionnuala

+0

アプリケーションがマルチユーザ環境の場合には、テキストファイルが複数のユーザエラーで同時にロックされる可能性がありますか? –

関連する問題