sql - 尝试在 VBA 中使用 DAO 运行 DELETE 查询

标签 sql excel vba ms-access

我使用的是 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 查询时,它工作得很好。但是当我尝试删除时,出现此错误。

" Run-time error '3219': Invalid operation. "

最佳答案

DAOOpenRecordSet 不适合 Delete 查询,因为它不返回任何记录集对象。请改用 Execute 方法:

改变

Set rsSql = dbs.OpenRecordset(Sql, dbOpenDynaset)

dbs.Execute(Sql)

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

关于sql - 尝试在 VBA 中使用 DAO 运行 DELETE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44638169/

相关文章:

mysql - MySQL 可以返回 "max"行中的列吗?

sql group by 排序时出现的问题

vba - 当范围为 1 时,循环变量范围的代码失败

vba - 选择每组的最大值及其关联值

ms-access - 错字不会在Access VBA中触发错误处理

mysql - 执行SQL脚本语句失败(MySQL中的存储过程)

mysql - 我应该如何使用 BETWEEN 和 GROUP BY 为查询建立索引?

excel - 代码不会从某些 URL 中提取图像

excel - 如何将数字四舍五入到最接近的十位?

excel - 如何将多个变量从 Excel 宏传递给 VBS 发送键?