ton*_*mke 4 vb6 ms-access vba ado access-vba
我正在尝试创建一个函数,该函数接受ADODB Recordset并将其数据复制到新的记录集中.
为此,我使用do循环遍历源记录集的每一行.在do循环中,我需要使用每个循环来遍历每一行的Fields集合,以捕获其数据.
但是,VB6似乎在为每个循环阻塞- 它突出显示for循环迭代器的名称(下例中的"fld")并抛出一个未定义的变量错误.
奇怪的是,当没有放在do循环中时,每个循环完全相同.
测试用例1 (无法定义"For Each fld"):
'targetTableName As String:要创建的新表的名称'sourceRecordSet As ADODB.Recordset:包含要发布到新targetTableName的结果的open recordset
Public Sub createTableFromRecordset(targetTableName As String, sourceRecordSet As ADODB.recordSet)
'(irrelevant code omitted)
'create MDB RS object
Dim targetRecordSet As ADODB.recordSet
Set targetRecordSet = mdbQuery("select * from targetTableName;")
'write data to recordset
sourceRecordSet.MoveFirst ' to be safe
targetRecordSet.MoveFirst ' to be safe
While Not sourceRecordSet.EOF
targetRecordSet.AddNew
For Each fld In sourceRecordSet.Fields 'fails here, hilighting fld
'do work
Next fld
sourceRecordSet.MoveNext
Loop
'(irrelevant code omitted)
End Sub
Run Code Online (Sandbox Code Playgroud)
测试用例2 (能够定义"For Each fld"就好了):
Private Sub testCase2()
'Create a source dataset
Dim sourceRs As ADODB.Recordset
Set sourceRs = functionThatGetsRecordset("(a query)")
'Create target db conn
Dim mdbConn As ADODB.Connection
Set mdbConn = functionThatGetsConn()
'iterate through source's fields
For Each fld In sourceRs.Fields 'works fine
'do work
Next fld
End Sub
Run Code Online (Sandbox Code Playgroud)
尝试两件事:
Dim fldField As Field
归档时间: |
|
查看次数: |
22681 次 |
最近记录: |