【发布时间】:2019-10-16 16:39:43
【问题描述】:
我正在尝试更新记录,或者在唯一 ID 不存在时创建记录。
代码给我一个错误,告诉我它会创建重复值。
我需要在我的代码“SQL: If Exists Update Else Insert”中包含这个。
Sub Upload_Excel_to_Access()
Dim wbpath As String
wbpath = Application.ActiveWorkbook.Path
Dim con As Object '' ADODB.Connection
Set con = CreateObject("ADODB.Connection") '' New ADODB.Connection
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=\\at\HRS SD Performance Data\Capacity DB.accdb;"
con.Execute _
"INSERT INTO AssigenedVol_tbl " & _
"SELECT * FROM [Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Users\luga\Desktop\Databasetest\DB Macro Test.xlsm].[rawdata$]"
con.Close
Set con = Nothing
End Sub
表名是“AssienedVol_tbl”
字段为:Process_Identifier、Login、Volume、effDate、ID_Unique(这是数据库中的主键)
【问题讨论】:
-
您真的在表名中使用了拼写错误的单词吗?
-
您应该检查哪些唯一索引使用目标表,检查您尝试插入的数据行是否已经存在,以及您要插入的行中是否没有重复键值的行。没有数据我们无法检查出什么问题,代码看起来很好
-
另外,您可以暂时从目标表中删除唯一索引,执行插入,然后分析列中出现重复的位置,唯一索引在哪里。
-
我认为其他数据库如 SQLServer 和 MySQL 可以有条件 SQL 用于更新/插入,Access 并没有,但它可以被模拟。查看stackoverflow.com/questions/6199417/upserting-in-ms-access中的最后一个答案
-
为什么不在 Access 中设置指向工作表的链接并在 Access 中设置代码?为什么要涉及 Excel?
标签: sql excel database vba ms-access