1

在 VBA 编程中,我试图了解记录集在将数据从函数内传递到另一个记录集时的状态

例如

Sub Test()

Dim Recordset1 as new ABODB.Recordset

Set RecordSet1 = BringDataFromRecordset2()

Do while not Recordset1.EOF
'data do something

Recordset1.movenext
Loop
End Sub

Function BringDataFromRecordset2() as ADODB.Recordset
dim RecordSet2 as new ADODB.Recorset

RecordSet2.Open "Select * from DUAL", Connectionstring

BringDataFromRecordset2 = RecordSet2 

End Function

RecordSet2 在“Set RecordSet1 = BringDataFromRecordset2() 行中将数据传递给 RecordSet1 时会发生什么?

它会自动关闭吗?如果 RecordSet2 仍然打开,我该如何关闭它?

4

1 回答 1

2

您编写的代码有几个问题。在您需要使用的功能中

Set BringDataFromRecordset2 = RecordSet2 

因为您的返回值是对象类型。

在 Test() 中,您不需要NewRecordset1 声明中的 ,因为该函数负责创建记录集,然后将其传递给 Test。

Recordset2(或至少它指向的对象)即使在函数BringDataFromRecordset完成后仍然在作用域内,因为现在 Recordset1 变量 inTest指向同一个对象。

于 2013-02-05T15:58:01.353 回答