我正在与一个真正困扰我的 VBA 非交互式问题作斗争:我有一个对 mysql 数据库的直通查询,如果用户双击它,它工作得很好。但是,如果首先没有进行交互,则从 VBA 自动化会话(从 excel 调用)调用它会失败。最奇怪的是:在 GUI 上单击一段时间后,它可以从 VBA 工作(可能是 odbc mysql 连接超时)。
直通查询在 DSN 和连接字符串中有它的密码(以解决存储问题)。链接表的行为相同。
调用的有问题的 VBA 代码如下所示:
CurrentProject.Connection.Execute "INSERT INTO [SomeLocalTable] (id) SELECT id FROM [somePassThroughOrLinkedMySQLTable]"
该错误是通用 odbc 连接失败 80004005。
虽然这种类型的查询一直有效:
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 Access 表中吗?
环境:Win8-64bit,Office2013,mysql-odbc-5.2w