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

时间:2017-06-19 19:09:43

标签: 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查询时,它运行正常。但是当我尝试DELETE时,我收到了这个错误。

  

"运行时错误' 3219':操作无效。 "

2 个答案:

答案 0 :(得分:1)

DAO' OpenRecordSet不适合Delete次查询,这些查询不会返回任何记录集对象。改为使用Execute方法:

更改

Set rsSql = dbs.OpenRecordset(Sql, dbOpenDynaset)

dbs.Execute(Sql)

在删除SQL语句中也不需要*。虽然Access会接受它,但其他系统可能会赢得

答案 1 :(得分:0)

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

dbs.Execute sql