3

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

Dim ClientName As String

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

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

我通过 ODBC 连接将 MS Access 2007 与 SQL Server 后端一起使用。

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

4

2 回答 2

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
于 2013-02-12T05:59:45.723 回答
2

您的代码创建了一个临时记录集;它在语句完成后立即超出范围。所以你不能.Close记录集,因为它不再存在。

情况类似于此即时窗口会话...

? CurrentDB.Recordsets.Count
 0 
strSelect = "SELECT Count(*) FROM Dual;"
MyVar = CurrentDB.OpenRecordset(strSelect)(0)
? MyVar
 1 
? CurrentDB.Recordsets.Count
 0 
于 2013-02-12T06:16:06.293 回答