在 MS Access 中使用 Excel VBA 到 SQL 删除
Using Excel VBA to SQL delete in MS Access
我在 Excel 中使用 VBA 从 MS Access 数据库中删除行。
我遇到了
"Error 3704 - Operation is not allowed when the object is open"
尽管在使用类似代码时我能够将信息添加到数据库中。
尝试删除时,它给我错误。请协助!
Sub DeleteOldValues()
'--------------
'DIM STATEMENTS
Dim strMyPath As String, strDBName As String, strDB As String, strSQL As String, StrQuery As String
'instantiate an ADO object using Dim with the New keyword:
Dim adoRecSet As New ADODB.Recordset
Dim connDB As New ADODB.Connection
'--------------
'THE CONNECTION OBJECT
strDBName = "Test.accdb"
strMyPath = "Y:"
strDB = strMyPath & "\" & strDBName
'Connect to a data source:
connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB
StrQuery = "DELETE * FROM Table WHERE ProjectName Like '*Project 1*'"
'Performs the actual query
adoRecSet.Open StrQuery, connDB
'--------------
'close the objects
adoRecSet.Close
connDB.Close
'destroy the variables
Set adoRecSet = Nothing <-error occurs at this point
Set connDB = Nothing
End Sub
您正在删除,所以您没有记录集。
'Connect to a data source:
connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB
StrQuery = "DELETE * FROM Table WHERE ProjectName Like '*Project 1*'"
'Performs the actual query
connDB.Execute strQuery
大多数情况下,最好使用DAO with MS Access
我在 Excel 中使用 VBA 从 MS Access 数据库中删除行。 我遇到了
"Error 3704 - Operation is not allowed when the object is open"
尽管在使用类似代码时我能够将信息添加到数据库中。 尝试删除时,它给我错误。请协助!
Sub DeleteOldValues()
'--------------
'DIM STATEMENTS
Dim strMyPath As String, strDBName As String, strDB As String, strSQL As String, StrQuery As String
'instantiate an ADO object using Dim with the New keyword:
Dim adoRecSet As New ADODB.Recordset
Dim connDB As New ADODB.Connection
'--------------
'THE CONNECTION OBJECT
strDBName = "Test.accdb"
strMyPath = "Y:"
strDB = strMyPath & "\" & strDBName
'Connect to a data source:
connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB
StrQuery = "DELETE * FROM Table WHERE ProjectName Like '*Project 1*'"
'Performs the actual query
adoRecSet.Open StrQuery, connDB
'--------------
'close the objects
adoRecSet.Close
connDB.Close
'destroy the variables
Set adoRecSet = Nothing <-error occurs at this point
Set connDB = Nothing
End Sub
您正在删除,所以您没有记录集。
'Connect to a data source:
connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB
StrQuery = "DELETE * FROM Table WHERE ProjectName Like '*Project 1*'"
'Performs the actual query
connDB.Execute strQuery
大多数情况下,最好使用DAO with MS Access