如果消息“Microsoft Access无法附加所有数据...”,如何让Access 2010创建错误表

问题描述 投票:0回答:1

我有一个vba,它将excel中的数据导入Access 2010表。问题是Access表有一些字段验证,这是错误消息的原因。我对错误很好,但我希望将有错误的行粘贴到错误表中。此外,excel数据不是来自我,所以我无法在导入之前验证数据。我想将“错误表”发送给发送给我的人来更正数据。这是我发现并运作的导入vba。

Public Function GetMyFile() As Boolean
On Error Resume Next
Dim fdFilePick As FileDialog
Dim varSelectedFile As Variant
Dim strInFile As String
Dim strImport70 As String
Set fdFilePick = Application.FileDialog(msoFileDialogFilePicker)
DoCmd.Hourglass True
    With fdFilePick
        .AllowMultiSelect = False
        .ButtonName = "&Import"
        .InitialFileName = Application.CurrentProject.Path
        .Filters.Add "Excel", "*.xlsx"
            If .Show Then
                For Each varSelectedFile In .SelectedItems
                    strInFile = CStr(varSelectedFile)
                    DoCmd.DeleteObject acTable, strImport70
                    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Import70", strInFile, True
                Next
            Else
                MsgBox "Import Process Canceled", vbCritical, "Import Canceled"
                GetMyFile = False
                Exit Function
            End If
    End With
End Function

如果这些都没有意义,请询问。我只是觉得必须有一种方法来捕获有错误的行。

感谢大家!

access-vba ms-access-2010
1个回答
0
投票

使用VBA导入数据时,Access不会将带有错误的行放入Paste Errors表中,就像将数据复制/粘贴到表中一样。

您可以做的是创建一个表的副本作为TempImport表并删除所有会阻止导入行的约束(验证)。然后将Excel数据导入此TempImport表。现在使用代码和/或查询来验证TempImport中的数据。如果所有行都很好,请将它们从TempImport表附加到最终表。如果任何行不好,请将它们导出为所需格式以发回,然后丢弃TempImport中的所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.