【问题标题】:MS Access Insert Into Select Does not work with vbaMS Access 插入选择不适用于 vba
【发布时间】:2020-12-22 03:49:34
【问题描述】:

我正在尝试像这样在选择查询中运行插入:

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 数据库中的查询向导运行查询时,它运行得很好。

我对@9​​87654322@ 的理解是,我可以愉快地使用 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

但它给了我同样的错误

【问题讨论】:

  • 为什么要将记录复制到 tempTable 而不仅仅是使用查询?
  • 经过测试,不需要括号。其他原因导致 Execute 失败。虽然我看到的应该可以工作。
  • 我正在将记录复制到临时表中,因为我想在数据表视图中以表格形式显示它。我知道我也可以使用查询,但我想在每条记录旁边添加一个复选框。即使用户关闭表单并返回,我也希望复选框值成为任何使用设置。所以我必须为此使用一个临时表

标签: vba ms-access


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多