2009-08-10 22 views
1

ボタンのクリックイベントでAccessデータベースにタブ区切りのテキストファイルをインポートしました。Accessでのエラー処理、VBa

ファイルが適切にインポートされます。ユーザーが異なる形式のテキストファイルを選択すると、コードは不適切なデータをデータベースにインポートし、新しいErrorLogテーブルを作成します。

テーブルから不適切なデータを制限するにはどうすればよいですか?エラー処理のしくみユーザーが不適切な形式のファイル(ErrorLogを生成する不適切なデータではなく)を選択すると、MsgBoxがポップアップし、ファイルが適切な形式でない場合、そのファイルをユーザーに通知します。

Private Sub btnXLUpload_Click() 
If (IsNull(Me.txtXLFIle.Value) = False Or Me.txtXLFIle.Value <> "") Then 
    MsgBox "Please Select the Excel File First", vbOKOnly 
Else 
    DoCmd.TransferText acImportDelim, "eBookSpecification", "eBookData", Me.txtXLFIle.Value, True, "" 
    MsgBox "Data has been uploaded in database", vbOKOnly 
End If 
Me.txtXLFIle.Value = "" 
End Sub 
+1

あなたが既に書いたコードを投稿してください。人々があなたに使用できるコードを与えることを期待しないでください。 – shahkalpesh

+0

ます。Private Sub btnXLUpload_Click() が(IsNullの(Me.txtXLFIle.Valueは)=虚偽またはMe.txtXLFIle.Value <> "")場合は次に のMsgBox "Excelはまずファイル選択してください"、vbOKOnly エルス のDoCmd .TransferText acImportDelim、 "eBookSpecification"、 "eBookData"、Me.txtXLFIle.Value、真の、 "データがデータベースにアップロードされた" のMsgBox ""、vbOKOnly END IF Me.txtXLFIle.Value = "" End Sub –

+0

元の質問を編集しないでくださいコードを組み込み、解読可能なコメントを削除するにはどうすればよいですか? –

答えて

3

VBAでエラー処理を行うには、On Errorステートメントを使用する必要があります。 VBAで行うベストプラクティスの1つは、次のとおりです。エラーハンドラの直前にある「Exit Sub」に注意してください。エラーハンドラのコードが毎回実行されるのを防ぎます。

+0

エラーが発生した時点で、インポートエラーテーブルが作成されているため、実際には役に立ちません。私がこれを行うのは、インポートファイルを最初にリンクすることです。インポート仕様と一致しない場合は、エラーがスローされます。そうでない場合は、リンクの代わりにインポートを行います。 –

+1

インポート仕様を持たないインポートファイルがあると考えられる場合は、エラーをスローするのではなく、正常に終了するようにしてください。エラーは予期しないイベントをトラップして処理し、可能であれば実行を安全に続けることです。 –

0

不適切なデータを検出して新しいErrorLogテーブルを作成する方法はわかりませんが、この場合はErrorLogテーブルが作成されたことを検出するとTransactionsを使用してロールバックしてください。