【问题标题】:Trying to run a DELETE query using DAO in VBA尝试在 VBA 中使用 DAO 运行 DELETE 查询
【发布时间】:2017-06-19 19:09:42
【问题描述】:

我使用 Access 2013 和 Excel 2013。在参考方面,我使用的是 Microsoft Office 15.0 Access 数据库引擎对象库。

所以我试图在 VBA 中运行 DELETE 查询。这是我到目前为止所拥有的

Sub UpdatePartList()
    Dim ws As DAO.Workspace
    Dim dbs As DAO.Database
    Dim rsTable As DAO.Recordset
    Dim rsQuery As DAO.Recordset
    Dim rsSql As DAO.Recordset

    Set ws = DBEngine.Workspaces(0)
    Set dbs = ws.OpenDatabase("P:\Distribution Purchasing\Kit Bids\Kit Parts Query.accdb")

    'deletes previous part numbers
    Sql = "DELETE * FROM [Kit Parts]"
    Set rsSql = dbs.OpenRecordset(Sql, dbOpenDynaset)

当我对同一个表运行 SELECT 查询时,它工作得很好。但是当我尝试删除时,我收到了这个错误。

“运行时错误‘3219’:无效操作。”

【问题讨论】:

    标签: sql excel vba ms-access


    【解决方案1】:

    DAOOpenRecordSet 不适用于不返回任何记录集对象的Delete 查询。请改用Execute 方法:

    改变

    Set rsSql = dbs.OpenRecordset(Sql, dbOpenDynaset)
    

    dbs.Execute(Sql)
    

    Delete SQL 语句中也不需要*。尽管 Access 会接受它,但其他系统可能不会。

    【讨论】:

    • 感谢工作!但现在我收到“无法从指定表中删除”错误。我关闭了数据库,现在没有其他人在使用它
    • @J.Doe 你可能有与之相关的完整性规则。您不能从其他表中删除用作外键的记录。
    • 没关系,我想通了。非常感谢大家帮助我!
    • 我对这些回复投了赞成票。接受答案不同吗?
    【解决方案2】:

    您可以按照@Rahul 的建议修改您的 SQL,并将最后一行代码更改为:

    dbs.Execute sql
    

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      • 2015-07-21
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      相关资源
      最近更新 更多