【发布时间】:2026-02-23 15:35:01
【问题描述】:
我使用 Access 数据库作为前端,MySQL 作为后端。为了节省时间相当密集的查询,我希望 MySQL-Server 并行运行这些查询。
目前我无法告诉 VBA 异步发送它们。我的代码是这样的:
Do While ...
Dim rs_newRecordSet As ADODB.Recordset
Set rs_newRecordSet = New ADODB.Recordset
rs_newRecordSet.Open Ext_TranslateQuery(str_query), Ext_Connection, , , adAsyncExecute
Loop
因此,在 Do while 循环期间,通过带有选项 adAsyncExecute 的记录集打开了几个查询。查询都是 INSERT INTO ... SELECT FROM-Queries,所以我不希望记录集返回任何内容。
现在的问题是,即使指定了 adAsyncExecute-Option,VBA 似乎也要等到 Recordset.Open-Command 完成。此外,如果我在 mysql 架构上运行 show processlist,我确实会看到一个带有 INSERT INTO ...-Query 的线程。
为什么 VBA 会等待查询的执行,我该如何更改?
非常感谢 巴斯蒂安
【问题讨论】:
-
您不应该将
rs.Open用于操作查询。请改用conn.Execute。 -
或者更好的是,创建一个
ADODB.Command和.Execute。 -
谢谢,切换到 ADODB.Command