从 MS Access VBA 通过 ODBC 进行 MySQL 查询:ADODB 异步执行不起作用
Posted
技术标签:
【中文标题】从 MS Access VBA 通过 ODBC 进行 MySQL 查询:ADODB 异步执行不起作用【英文标题】:MySQL-Queries via ODBC from MS Access VBA: ADODB asynchronous execution does not work 【发布时间】:2016-11-23 19:16:25 【问题描述】:我使用 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
【参考方案1】:
感谢您的帮助,我在这里找到了答案: VB6, ADO, Asynchronous command and closing the connection
您必须为要并行执行的每个记录集/命令创建一个新连接,否则查询将堆积在连接执行列表中。执行每个查询后不要忘记关闭连接。
【讨论】:
以上是关于从 MS Access VBA 通过 ODBC 进行 MySQL 查询:ADODB 异步执行不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MySQl 的 ODBC 连接器在 MS Access 中的 VBA 中执行和查询?
如何在 ms-access VBA 中检索表的 odbc 数据库名称
在 Access 中使用 ODBC 连接到 MS SQL Server 2012:手动调用查询和在 VBA 中调用查询之间的巨大时间差异