【发布时间】:2021-07-06 16:14:28
【问题描述】:
我正在尝试使用 ADODB Excel 中的子查询从其他表中选择数据。这是我的代码:
Sub CopyData()
Dim cmd As String
If OpenConnection() = True Then 'The connection function already created in my module
cmd = "SELECT * FROM (SELECT [SheetName] FROM `Breakdown structure library$` WHERE [Name (Name *)]='WBS');"
Rcdset.Open cmd, Con, adOpenStatic, adLockBatchOptimistic
With shTemp
.Cells.Delete
.Range("A1").CopyFromRecordset Rcdset
End With
If Con.State Then Con.Close
End If
End Sub
结果是错误的:
运行时错误“-2147217904”(80040e10):没有为一个或多个参数指定值
我知道发生了什么。您必须在工作表名称末尾添加“$”才能在 ADODB Excel 中执行查询,例如:
SELECT * FROM `MyTable` '(not working in ADODB Excel, but working in Access database)
SELECT * FROM `MyTable$` '(working in ADODB Excel)
我不知道如何让sql子查询自动识别表,我们要在哪里选择数据。
【问题讨论】:
-
您是否尝试从子选择中获取结果作为选择中的表名?
-
@NoChance : 结果是我单独执行时的表名。
-
@CDP1802:是的!这就是我想要的!