gpt4 book ai didi

excel - 如果将重复记录插入表中, Access 不会引发错误

转载 作者:行者123 更新时间:2023-12-04 10:17:29 25 4
gpt4 key购买 nike

我正在使用以下代码将 Excel 电子表格导入 Access 数据库:

Dim appAccess As Access.Application
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "path_to_db"
appAccess.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "my_db_table_name", "path_to_excel_file", hasFieldNames, acImportRange

我的数据库中的第一列是主键。
如果插入具有相同主键的数据,我不会收到任何错误。但是我想得到错误。
如果电子表格中包含重复行,如何强制出错?

最佳答案

考虑使用直接 SQL 查询 Excel 工作簿(在 Access SQL 中是允许的)来捕获异常错误,而不是便捷方法 TransferSpreadsheet,如下所示。因为 MS Access 既是 GUI 应用程序又是数据库引擎,因此您需要启用两个不同的引用。使用实际列、名称和路径调整下面的 SQL 语句。

Public Sub CaptureExceptions()
On Error GoTo ErrHandle
Dim strSQL As String
Dim db As DAO.Database ' ENABLE Microsoft Office x.x Access database engine object library
Dim appAccess As Access.Application ' ENABLE Microsoft Access x.x Object Library

Set appAccess = CreateObject("Access.Application")

appAccess.OpenCurrentDatabase "C:\Path\To\Access\Database.accdb"

strSQL = "INSERT INTO my_db_table_name (Col1, Col2, Col3, ...)" _
& " SELECT Col1, Col2, Col3, ..." _
& " FROM [Excel 12.0 Xml; HDR = Yes;Database=C:\Path\To\Excel\Workbook.xlsx].[SheetName$];"

Set db = appAccess.CurrentDb()
db.Execute strSQL, dbFailOnError

appAccess.CloseCurrentDatabase

ExitHandle:
Set db = Nothing: Set appAccess = Nothing
Exit Sub

ErrHandle:
MsgBox Err.Number & ": " & Err.Description, vbCritical, "RUNTIME ERROR"
Resume ExitHandle
End Sub

Exception Message

关于excel - 如果将重复记录插入表中, Access 不会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61006545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com