首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL-来自Microsoft的查询失败,如果不是交互式的呢?

问mySQL-来自Microsoft的查询失败,如果不是交互式的呢?
EN

Stack Overflow用户
提问于 2012-12-09 15:38:29
回答 1查看 2.9K关注 0票数 4

我正在与一个真正困扰我的VBA非交互问题作斗争:我有一个对mysql数据库的传递查询,如果用户双击,这个查询就能正常工作。但如果不首先进行交互,则从VBA自动化会话(从excel调用)调用它就会失败。最奇怪的是:在GUI上单击VBA一段时间后,它就可以工作了(odbc连接超时可能)。

传递查询在DSN和连接字符串中有它的密码(以解决存储中的问题)。这种行为与链接表的行为相同。

名为VBA的有问题的代码如下所示:

代码语言:javascript
复制
CurrentProject.Connection.Execute "INSERT INTO [SomeLocalTable] (id) SELECT id FROM [somePassThroughOrLinkedMySQLTable]"

此错误为通用odbc连接失败80004005。

虽然这种类型的查询一直在工作:

代码语言:javascript
复制
Dim cnn As New ADODB.Connection
cnn.Open ("Driver=MySQL ODBC 5.2w Driver;SERVER=myserver;UID=user;DATABASE={db};PORT=3306;DFLT_BIGINT_BIND_STR=1;PWD=secret")

我是否可以像UI那样“初始化”直通查询以使其正常工作?或者我可以使用第二种类型的查询插入到本地MS访问表中?

环境:Win8 8-64 Win8,Office2013,mysql-odbd-5.2w

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-13 08:56:37

我认为问题的出现是因为您将Access数据库称为外部ADODB数据源,而不是使用Access实例来通过DAO运行查询。下面的示例子创建一个不可见的Access实例并执行查询,然后在完成后退出。在这个示例中,我使用了DAO版本3.6的后期绑定,所以您可能需要稍微修改一下,或者使用早期绑定:

代码语言:javascript
复制
Sub ExecPassThru()

Dim acApp As Object
Dim acDb As Object

    Set acApp = CreateObject("Access.Application")
    Set acDb = CreateObject("DAO.DBEngine.36") 'May need slight alteration
    acApp.OpenCurrentDatabase ("C:\db1.mdb") 'Amend as required

    Set acDb = acApp.CurrentDb

    acDb.Execute "INSERT INTO [SomeLocalTable] (id) SELECT id FROM [somePassThroughOrLinkedMySQLTable]"

    acDb.Close
    acApp.Quit 2

End Sub

这是使用Excel 2003编写的,但是应该很容易转换到office的更高版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13788880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档