如果不是交互式的,Microsoft Access VBA的mySQL查询会失败?
发布时间:2020-12-14 05:27:28 所属栏目:Windows 来源:网络整理
导读:我正在与一个真正让我烦恼的VBA非交互式问题作斗争:我对 mysql数据库有一个传递查询,如果用户双击它会很好.但如果从VBA自动化会话调用(从excel调用),如果先没有进行交互,则会失败.最奇怪的是:它在GUI上点击一段时间后可以在VBA上运行(可能是odbc mysql连接
我正在与一个真正让我烦恼的VBA非交互式问题作斗争:我对
mysql数据库有一个传递查询,如果用户双击它会很好.但如果从VBA自动化会话调用(从excel调用),如果先没有进行交互,则会失败.最奇怪的是:它在GUI上点击一段时间后可以在VBA上运行(可能是odbc mysql连接超时).
passthrough-query在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 解决方法
我认为问题正在发生,因为您将Access数据库称为外部ADODB数据源,而是使用Access实例以通过DAO运行查询.下面的示例子项创建一个不可见的Access实例并执行查询,然后在完成后退出.我在这个例子中使用了DAO版本3.6的后期绑定,因此您可能需要稍微修改该位或使用早期绑定:
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编码的,但应该很容易转换为更高版本的办公室. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2012-r2 – 发布后安装问题 – 无法连接
- windows-update – 构建WSUS服务器:从哪里开始?
- windows – 无法升级SVN工作副本
- windows-8 – 是否可以在Windows RT上编程
- windows-server-2008 – Ram建议与SQL DB大小
- windows-server-2008-r2 – IIS 7.5使用ASP.NET MVC 3截断包
- windows – QueryPerformanceCounter和线程安全
- HTTPERR日志关闭方法
- 批处理文件 – 如何将今天的日期与文件的上次修改日期进行比
- windows-7 – 双任务栏图标android工作室
推荐文章
站长推荐
热点阅读