vba - MS Access 插入到选择中不适用于 vba
问题描述
我正在尝试像这样在选择查询中运行插入:
Dim rs as new ADODB.recordset
rs.Open "INSERT INTO tempTable(PartNumber, Age, Height, Notes, UpdateType)" & _
" SELECT PartNumber, Age, Height, Notes, UpdateType FROM TABLE2", CurrentProject.Connection, adOpenStatic, adLockOptimistic
这给了我一个错误:
INSERT INTO 语句中的语法错误
真正奇怪的是,当我 debug.print 上面的语句并从 Access 数据库中的查询向导运行查询时,它运行得很好。
我的理解currentproject.connection
是我可以愉快地使用 Jet-SQL 或 MS Access 查询语法,因此如果查询在 Access 的查询窗口中运行,它也应该在 VBA 中运行。似乎情况并非如此。
以下是我尝试使代码运行的其他一些事情:
CurrentProject.Connection.Execute "INSERT INTO tempTable(PartNumber, Age, Height, Notes, UpdateType)" & _
" SELECT PartNumber, Age, Height, Notes, UpdateType FROM TABLE2"
这给出了与上面相同的错误。
我还尝试添加一个新行vbclrf
:
rs.Open "INSERT INTO tempTable(PartNumber, Age, Height, Notes, UpdateType)" & _
& vbclrf & " SELECT PartNumber, Age, Height, Notes, UpdateType FROM TABLE2", CurrentProject.Connection, adOpenStatic, adLockOptimistic
但它给了我同样的错误
解决方案
只有 SELECT 语句用于设置记录集对象。不需要记录集。
INSERT 是一个动作 SQL,因此对于 VBA 构造语句,使用 DoCmd.RunSQL 或 CurrentDb.Execute 或 CurrentProject.Connection.Execute。
我的偏好是:CurrentDb.Execute "your SQL statement here"
推荐阅读
- javascript - 向数组添加键,然后组合(有更好的方法吗?)
- excel - 如何在 Excel“表格”中搜索值?
- docker - 将 Cloudwatch 日志记录添加到 CircleCI 容器构建
- sql - SQL 语句中数据透视表中的计算字段未正确计算
- javascript - 如果数组中只有 7 个元素,Vue v-for 可以工作
- c# - 正则表达式替换 C 块注释之间的字符串
- python - 在 pip install 中使用命令行代理时,如果密码有“@”怎么办?
- bash - Ubuntu 16.04 LTS 安装脚本:.bashrc 还是 .bash_profile?
- .net - XAML/UWP 自定义控件 - 在运行时定义重复模式
- python - 使用 python 抓取网站(无表单,会话 cookie)