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

「SetRecordSet1=BringDataFromRecordset2()」行のRecordSet1にデータを渡すと、RecordSet2はどうなりますか?

自動的に閉じますか?RecordSet2がまだ開いている場合、どうすれば閉じることができますか?

4

1 に答える 1

2

記述されたコードにはいくつかの問題があります。関数で使用する必要があります

Set BringDataFromRecordset2 = RecordSet2 

戻り値はオブジェクト型であるためです。

NewTest()では、関数がレコードセットの作成を処理し、それをTestに渡すため、Recordset1宣言にを含める必要はありません。

Recordset2(または少なくともそれが指すオブジェクト)は、関数BringDataFromRecordsetが完了した後もスコープ内にあります。これは、Recordset1変数がTest同じオブジェクトを指しているためです。

于 2013-02-05T15:58:01.353 に答える