【发布时间】:2020-11-19 22:39:02
【问题描述】:
我正在使用 MS-Access,试图将两个表合并为第三个:
来自具有以下字段的表“dbHoldings”:
(ID,isin,Code_BB,Name_BB,asset_name,Weighs,DataDiEstrazione)
与表“dbSecurities2”一起:
(ID,isin,fldName,blkName,fldValue)
进入带有字段的表“dbAssetGroup”:
(ID,isin,Code_BB,Name_BB,asset_name,BB_Weighs,fieldName,bulkName,Bulkweight,allocationWeight,DataDiEstrazione)
我收到运行时错误“3131”
这是我的尝试:
strSQL = "INSERT INTO dbAssetGroup(isin, Code_BB, Name_BB, asset_name, BB_Weighs, fieldName, bulkName, fldValue, DataDiEstrazione) " & _
"SELECT H.isin, H.Code_BB, H.Name_BB, H.asset_name, H.Weighs, S.fldName, S.blkName, S.fldValue, H.DataDiEstrazione " & _
"FROM " & _
"dbHoldings AS H " & _
"INNER JOIN dbSecurities2 AS S " & _
"ON H.isin=S.isin) "
db.Execute strSQL
【问题讨论】:
-
最后的 ) 匹配吗?
-
你说的也不对...
-
你为什么要在 VBA 中构建 SQL 而没有任何 VBA 变量的连接?考虑使用更易读、更易维护和更高效的保存查询,因为 Access 引擎会编译最佳执行计划,尤其是使用
JOIN来保存查询。另外,您无法保存有语法错误的查询! -
谢谢 Parfait 我会尝试使用查询然后......你是什么意思“在 VBA 中构建 SQL 而不连接任何 VBA 变量?”请你再争论一下好吗?
-
我想 Parfait 想知道你为什么要在 VBA 中构建一个没有动态参数的 SQL 语句。通过将变量连接到构造的 SQL 语句中提供的参数。由于此 SQL 没有变量输入,因此可以是 Access 中的查询对象,Excel VBA 调用查询对象而不是构建 SQL 语句。