【问题标题】:Access - custom "was unable to append all data to table"?访问 - 自定义“无法将所有数据附加到表”?
【发布时间】:2020-07-13 20:07:54
【问题描述】:

我创建了代码,用于通过 TransferSheet 和构建的 Query 方法将数据从 Excel 导入所需的表。我也在尝试解决用户在将数据导入数据库时​​可能出现的所有错误(错误的文件格式、追加 0 行、字段名称与数据库中的不同等),但无法摆脱错误 3059“无法追加所有数据到表” - 当您尝试导入一些无效数据时会发生这种情况。我想要一个针对此错误的自定义 Msgbox,并停止执行我的查询。这是我的代码 - 简而言之:

Private Sub CmdImport_Click()

Dim SQL As String

Dim dbs As DAO.Database

Set dbs = CurrentDb

On Error GoTo ERR1

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "NEWTABLE", "<Imported file>", True

SQL = " INSERT INTO MyTable (Field1)" & _
" SELECT DISTINCT" & _
" FROM NEWTABLE" 

DoCmd.SetWarnings False

dbs.Execute SQL

DoCmd.RunSQL "DELETE * FROM NEWTABLE"

DoCmd.SetWarnings True

ERR1:

If Err.Number = 3059 Then
MsgBox "This file doesn't have proper data to import. Import canceled !"
Exit Sub
End If

End Sub

无论DoCmd.SetWarnings False如何,Access都已打开内置窗口后,此代码会弹出自定义Msgbox。如果我在 TransferSheet 方法之前移动DoCmd.SetWarnings False,导入会被执行并且不会显示 Msgbox - 这是错误的。我该如何处理这个错误,有人知道吗??

【问题讨论】:

  • 看起来这个是硬摇滚。仍然没有找到任何可行的方法。

标签: ms-access vba ms-access-2010


【解决方案1】:

您可以导入临时表。

然后使用转换和清理数据的查询读取此内容,并使用此查询进行进一步处理 - 现在将运行而不会因数据格式错误而导致错误。

【讨论】:

    【解决方案2】:

    我想出了另一种方法来解决这个问题。我已经在 DoCmd.TransferSheet 方法之前放置了我需要的所有控件,包括消除导致“无法将所有数据附加到表”的错误。我添加了用于检查 excel 文件的代码,如果 Excel 文件数据不符合条件,则不会执行 DoCmd.TransferSheet - 因此根本不会出现错误“无法将所有数据附加到表中”。这是(首先检查 Excel 文件数据是否适合执行 DoCmd.TransferSheet 导入的部分代码):

     Dim XcelApp As Object
    
            Dim x, i
            Set XcelApp = CreateObject("Excel.Application")
            XcelApp.ScreenUpdating = False
    
            XcelApp.Workbooks.Open("C:\Users\Lucky\Desktop\Test\Sample.xlsx")
    
       With XcelApp
    
    i = XcelApp.Rows(1).Find(What:="Število", LookIn:=xlValues, Lookat:=xlWhole).Column
    
    x = XcelApp.Range(XcelApp.Cells(1, i), XcelApp.Cells(XcelApp.Rows.Count, i).End(xlUp)).Value
    
            For i = 2 To UBound(x)
                If Not IsNumeric(x(i, 1)) Then
    
                ExcelApp.Quit
                Set ExcelApp = Nothing
                MsgBox "This Excel file is not valid"
            : Exit Sub
    
                End If
    
            Next i
    
            End With
    
            XcelApp.Quit
            XcelApp = Nothing
    

    代码是来自这个已解决线程的 snapshop:loop through Excel columns

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      • 2022-07-06
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多