我已经读过在Access中关闭记录集对象很重要,但是对于我的代码,我从不创建记录集对象,我总是只使用内联引用,例如:
Dim ClientName As String
ClientName = CurrentDB.OpenRecordset([some SQL]).Fields(0).Value
我看不到像CurrentDB.CloseRecordset这样的东西,我不认为CurrentDB.Close是个好主意。在这种情况下,我是否需要关闭任何记录集,还是自动执行此操作?
我通过ODBC连接使用MS Access 2007和SQL Server后端。
如果我的任何术语或使用方法有误,请随时纠正我!
答案 0 :(得分:2)
显然,CurrentDB.OpenRecordset'追加到记录集'
此代码也是如此,并且它表明您已添加到记录集集合中:
Dim ClientName As String
msgbox CurrentDB.Recordsets.Count
ClientName = CurrentDB.OpenRecordset([some SQL]).Fields(0).Value
msgbox CurrentDB.Recordsets.Count
走出困境,这是否有效:
Dim ClientName As String
msgbox CurrentDB.Recordsets.Count
ClientName = CurrentDB.OpenRecordset([some SQL]).Fields(0).Value
msgbox CurrentDB.Recordsets.Count
msgbox CurrentDB.Recordsets(0).Close
答案 1 :(得分:2)
您的代码会创建一个短暂的记录集;声明完成后立即超出范围。所以你不能.Close
记录集,因为它不再存在。
情况类似于此立即窗口会话...
? CurrentDB.Recordsets.Count
0
strSelect = "SELECT Count(*) FROM Dual;"
MyVar = CurrentDB.OpenRecordset(strSelect)(0)
? MyVar
1
? CurrentDB.Recordsets.Count
0