如果我不创建记录集对象,是否需要在MS Access中关闭记录集?

时间:2013-02-12 03:27:07

标签: database vba ms-access-2007 recordset

我已经读过在Access中关闭记录集对象很重要,但是对于我的代码,我从不创建记录集对象,我总是只使用内联引用,例如:

Dim ClientName As String

ClientName = CurrentDB.OpenRecordset([some SQL]).Fields(0).Value

我看不到像CurrentDB.CloseRecordset这样的东西,我不认为CurrentDB.Close是个好主意。在这种情况下,我是否需要关闭任何记录集,还是自动执行此操作?

我通过ODBC连接使用MS Access 2007和SQL Server后端。

如果我的任何术语或使用方法有误,请随时纠正我!

2 个答案:

答案 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