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

Excel 如果将重复记录插入表中,Access不会引发错误,excel,vba,ms-access,Excel,Vba,Ms Access,我使用以下代码将Excel电子表格导入access数据库: Dim appAccess As Access.Application 设置appAccess=CreateObject(“Access.Application”) appAccess.OpenCurrentDatabase“路径到数据库” appAccess.DoCmd.TransferSpreadsheet acImport,acSpreadsheetTypeExcel12Xml,“我的数据库表格名称”,“到excel文件的路径”,

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

Dim appAccess As Access.Application
设置appAccess=CreateObject(“Access.Application”)
appAccess.OpenCurrentDatabase“路径到数据库”
appAccess.DoCmd.TransferSpreadsheet acImport,acSpreadsheetTypeExcel12Xml,“我的数据库表格名称”,“到excel文件的路径”,HasFieldName,acImportRange
数据库中的第一列是主键。 如果插入具有相同主键的数据,我不会得到任何错误。我想得到错误,但是。
如果电子表格中包含重复行,则如何强制出错?

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

Public Sub CaptureExceptions()
关于错误转到错误句柄
作为字符串的Dim strSQL
Dim db As DAO.Database“启用Microsoft Office x.x Access数据库引擎对象库
将appAccess设置为Access。应用程序“启用Microsoft Access x.x对象库”
设置appAccess=CreateObject(“Access.Application”)
appAccess.OpenCurrentDatabase“C:\Path\To\Access\Database.accdb”
strSQL=“插入我的\u db\u表\u名称(Col1、Col2、Col3等)”_
&“选择列1、列2、列3,…”_
&“从[Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Excel\Workbook.xlsx]。[SheetName$];”
Set db=appAccess.CurrentDb()
执行strSQL,dbFailOnError
appAccess.CloseCurrentDatabase
出口:
Set db=Nothing:Set appAccess=Nothing
出口接头
错误句柄:
MsgBox错误编号&“:”错误描述(&R),vbCritical,“运行时错误”
复出
端接头

在Access表中保存主键的字段上添加一个唯一的索引。@Gustav如果我查看表属性,已经有一个唯一的索引(我猜当我设置主键时,它是自动创建的)……那么记录在该字段中必须具有且将具有唯一的值。@Gustav它们确实具有唯一的值。重复的只是没有被插入。。。这不是我期望/想要的行为。那么,在将记录插入最终表之前,必须先检查这些记录。例如,写入临时表,并检查是否存在重复。