【发布时间】:2017-09-20 20:47:16
【问题描述】:
我想用 VBA 从另一个记录集中打开一个记录集。
如果我编写 SQL 并将其保存到名为 new_entry 和 valid_unit 的查询中,这将有效
' valid_unit
SELECT *
FROM import_raw_data
WHERE unit_name IN (SELECT unit_name FROM unit);
' new_entry
SELECT *
FROM valid_unit
WHERE id NOT IN (SELECT id FROM serviceman);
WHERE
但是,我想只在 VBA 中执行此操作,而不是保存查询。
Sub testing()
valid_unit_sql = _
"SELECT * " _
& "FROM import_raw_data"
& "WHERE unit_name IN (SELECT unit_name FROM unit);
new_entry_sql = _
"SELECT * "
& "FROM ( " & valid_unit_sql & ") " _
& "WHERE id NOT IN (SELECT id FROM serviceman);"
With CurrentDb
Set valid_unit = .OpenRecordset(valid_unit_sql)
' valid_unit works great
Set new_entry = .OpenRecordset(new_entry_sql)
' this doesnt, it errors out
End With
End Sub
我可以知道我该怎么做吗?我应该保存我的 valid_unit 查询并改为 FROM valid_unit 吗?
【问题讨论】:
-
您的代码无效,请更正并显示有效代码。然后阅读并申请:How to debug dynamic SQL in VBA——如果没有帮助,请将
Debug.Print new_entry_sql的输出添加到您的问题中。 -
另外,"errors out" 不是很有帮助,请添加完整的错误消息。
-
感谢您指出这一点,并对提供的错误代码和非描述性错误消息表示歉意。我会在以后的问题上记下这一点!