VBA:由MoveNext覆盖的RecordSet值
问题描述:
在使用VBA和DAO.Recordset进行某些工作时,我遇到了一个奇怪的问题。 我目前正在循环throgh记录集并保存数组中的earch迭代的相应字段。 但由于while循环每次调用“.MoveNext”时,存储在“rs.Fields.Field(i).Value”中的信息都将被覆盖,因此这些字段不可用。我在调试过程中发现了这一点。VBA:由MoveNext覆盖的RecordSet值
一些相关代码:
If Not rs Is Nothing Then If rs.RecordCount > 0 Then With rs While Not .EOF ReDim Preserve fieldSet(0 To i + 1) As DAO.Fields Set fieldSet(i) = rs.Fields i = i + 1 ' the values are still intact at this point .MoveNext ' here's where there's only "No current record" stored inside the value-field Wend End With End If
希望某人有一个想法是什么原因造成这一点。提前致谢。
答
尝试中的每个记录的字段/列计数运行的另一个循环:
Do While Not rs.EOF
For j = 0 to rs.Fields.Count
Set fieldSet(j) = rs.Fields.Field(j).Value
'-- do stuff
Next j
rs.MoveNext
Loop
+0
@Remou会给你一个更好的主意:) – bonCodigo
由于您将移动到下一个'的record'领域将被重置为下一个记录..做自己这是什么意思? 'rs.Fields.Field(I).Value'?或者你的意思是'rs.Fields(i).Value'? – bonCodigo
我不认为这会起作用。你所要做的就是将**引用**复制到rs.fields中。所以,数组的所有成员都会指向相同的东西。 –