首页 > 解决方案 > 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

但它给了我同样的错误

标签: vbams-access

解决方案


只有 SELECT 语句用于设置记录集对象。不需要记录集。

INSERT 是一个动作 SQL,因此对于 VBA 构造语句,使用 DoCmd.RunSQL 或 CurrentDb.Execute 或 CurrentProject.Connection.Execute。

我的偏好是:CurrentDb.Execute "your SQL statement here"


推荐阅读