2009-08-10 3 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

+0

개인 서브 btnXLUpload_Click() 은 (ISNULL (Me.txtXLFIle.Value는) = 거짓 또는 Me.txtXLFIle.Value <> "") 경우 있는 MsgBox "엑셀 먼저 파일을 선택하십시오", vbOKOnly 그렇지 DoCmd .TransferText acImportDelim, "eBookSpecification", "eBookData"Me.txtXLFIle.Value, 사실, "데이터가 데이터베이스에 업로드 된" 있는 MsgBox "", vbOKOnly 최종면 Me.txtXLFIle.Value = "" End Sub –

+0

원래 질문을 수정하지 않는 이유는 무엇입니까? 코드를 포함하고 읽을 수없는 주석을 삭제 하시겠습니까? –

답변

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

오류가 발생하면 가져 오기 오류 테이블이 생성 될 것이므로 실제로 도움이되지 않습니다. 이 작업을 수행 할 때 가져 오기 파일을 먼저 연결하고 가져 오기 사양과 일치하지 않으면 오류가 발생합니다. 그렇지 않으면 링크 대신 가져 오기를 수행하십시오. –

+1

가져 오기 사양이없는 가져 오기 파일이있는 것으로 간주되는 경우 오류를 던지기보다는 정상적으로 종료해야합니다. 오류는 예기치 않은 이벤트를 트래핑 한 다음 가능한 경우 처리를 안전하게 수행해야합니다. –

0

부적절한 데이터를 발견하여 새로운 ErrorLog 테이블을 만드는 방법을 귀하의 메시지에서 정말로 이해할 수 없지만,이 경우 ErrorLog 테이블이 생성되었음을 감지하면 Transactions을 사용하여 수정 사항을 롤백해야합니다.