【问题标题】:Restrict improper data from table限制表格中的不正确数据
【发布时间】:2010-11-18 05:12:56
【问题描述】:

我在 Access 数据库中的按钮单击事件中导入了一个制表符分隔的文本文件。

文件已正确导入,如果用户选择不同格式的文本文件,代码会将不正确的数据导入数据库并创建一个新的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 

【问题讨论】:

  • 发布您已经编写的代码。不要指望人们给你可以使用的代码。
  • 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 "数据已上传到数据库", vbOKOnly End If Me.txtXLFIle.Value = "" End Sub
  • 你为什么不编辑你的原始问题以包含代码并删除不可读的评论?

标签: vba ms-access error-handling


【解决方案1】:

从您的消息中我不太了解您是如何检测不正确的数据并创建新的 ErrorLog 表的,但是在这种情况下,一旦检测到 ErrorLog 表已创建,您应该使用Transactions 回滚修改。

【讨论】:

    【解决方案2】:

    对于 VBA 中的错误处理,您必须使用 On Error 语句。在 VBA 中这样做的最佳实践之一是:

    Sub example()
    
    On Error GoTo err_hndl
    
    (.....do something....)
    
    Exit Sub
    err_hndl:
    MsgBox("We got an error!")
    End Sub
    

    请注意错误处理程序之前的“退出子”。它可以防止每次都执行错误处理程序的代码。

    【讨论】:

    • 这并没有真正的帮助,因为当错误发生时,导入错误表已经被创建。我这样做是先尝试链接导入文件,如果它与导入规范不匹配,它将引发错误。如果没有,则执行导入而不是链接。
    • 如果考虑到导入文件没有导入规范的情况,您应该尝试优雅地退出而不是抛出错误。错误应该是通过捕获 then 来处理意外事件,并在可能的情况下安全地继续执行。
    猜你喜欢
    • 2016-02-15
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2012-06-09
    相关资源
    最近更新 更多