2009-08-10 143 views
1

我已經在按鈕單擊事件中的Access數據庫中導入了製表符分隔的文本文件。錯誤處理在Access中,VBa

該文件已正確導入,如果用戶選擇不同格式的文本文件,代碼會將不正確的數據導入數據庫並創建新的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 2009-08-10 07:19:10

+0

私人小組btnXLUpload_Click() 如果(ISNULL(Me.txtXLFIle.Value)=虛假或Me.txtXLFIle.Value <> 「」),然後 MsgBox 「請選擇Excel文件第一」,vbOKOnly 否則 的DoCmd .TransferText acImportDelim, 「eBookSpecification」, 「eBookData」,Me.txtXLFIle.Value,真 「」 MSGBOX 「數據已在數據庫上載」,vbOKOnly 結束如果 Me.txtXLFIle.Value = 「」 End Sub – 2009-08-10 07:33:29

+0

你爲什麼不編輯你原來的問題包括代碼並刪除不可讀的評論? – 2009-08-10 16:37:42

回答

3

對於VBA中的錯誤處理,您必須使用On Error語句。在VBA中這樣做的最佳做法之一是:

Sub example() 

On Error GoTo err_hndl 

(.....do something....) 

Exit Sub 
err_hndl: 
MsgBox("We got an error!") 
End Sub 

請注意「Exit Sub」就在錯誤處理程序之前。它可以防止每次都執行錯誤處理程序的代碼。

+0

這並沒有真正的幫助,因爲在發生錯誤時,導入錯誤表將被創建。我所做的就是先嚐試鏈接導入文件,如果它不符合導入規範,則會引發錯誤。如果沒有,那麼做導入而不是鏈接。 – 2009-08-10 16:38:52

+1

如果有一個導入文件沒有導入規範的被認爲的情況下,你應該嘗試從它優雅退出,而不是拋出一個錯誤。錯誤應該是通過捕獲然後處理意外事件,並且如果可能的話,安全地繼續執行。 – 2009-08-10 17:53:33

0

我從你的消息中不能理解你如何檢測不正確的數據並創建一個新的ErrorLog表,但在這種情況下,你應該使用Transactions回滾修改,一旦你檢測到ErrorLog表已經被創建。