【发布时间】:2015-05-12 13:11:33
【问题描述】:
我有课
Class dbaccess
Public Sub DBOpenAccess()
...
strConnStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="
strConnStr = strConnStr & strDBLoc & ";"
Set cnnObj = server.CreateObject("ADODB.Connection")
cnnObj.Open strConnStr
End Sub
...
Public Function OpenRec()
Set objRec = server.CreateObject("ADODB.Connection")
End Function
Public Function ExecuteUpdateSQL(strSQLStatement)
Set objRec = cnnObj.Execute(strSQLStatement)
End Function
...
Public Function CloseRec()
objRec.close
Set objRec = Nothing
End Function
End Class
当我想从其他子执行查询并循环遍历记录集时
Sub transl()
Set db = New dbaccess
Call db.DBOpenAccess()
Call db.OpenRec()
Set rst = db.ExecuteUpdateSQL("select * from Translations")
Do while Not rst.eof
...
rst.movenext
loop
rst.close
Set rst = Nothing
Call db.CloseRec()
Call db.DBClose()
Set db = Nothing
End Sub
但是我在objRec.close线上遇到错误
ADODB.Connection 错误'800a0e78'
对象关闭时不允许操作。
我做错了什么?以及如何解决这个问题?
【问题讨论】:
-
ExecuteUpdateSQL什么都不返回? - 如果它返回objRec,则rst和objRec引用相同的记录集,当您显式关闭rst然后尝试关闭objRec您尝试关闭基础记录集两次,因此出现错误。 -
在您的代码中,ExecuteUpdateSQL 实际上是否返回任何内容?
-
这是原始代码,所以我认为它不会返回任何东西
-
但是
Set rst = db.ExecuteUpdateSQL会产生其他错误.... -
您发布的代码显然不可能引发您声称的错误。请让您的代码示例minimal, complete, and verifiable。当您的示例代码不允许重现问题时,我们无法为您提供帮助。
标签: vb.net loops vbscript ado recordset