我正在使用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':操作无效。 "
答案 0 :(得分:1)
DAO
' OpenRecordSet
不适合Delete
次查询,这些查询不会返回任何记录集对象。改为使用Execute
方法:
更改
Set rsSql = dbs.OpenRecordset(Sql, dbOpenDynaset)
到
dbs.Execute(Sql)
在删除SQL语句中也不需要*
。虽然Access会接受它,但其他系统可能会赢得
答案 1 :(得分:0)
您可以修改@Rahul建议的SQL,并将最后一行代码更改为:
dbs.Execute sql