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 

希望某人有一个想法是什么原因造成这一点。提前致谢。

+0

由于您将移动到下一个'的record'领域将被重置为下一个记录..做自己这是什么意思? 'rs.Fields.Field(I).Value'?或者你的意思是'rs.Fields(i).Value'? – bonCodigo

+0

我不认为这会起作用。你所要做的就是将**引用**复制到rs.fields中。所以,数组的所有成员都会指向相同的东西。 –

尝试中的每个记录的字段/列计数运行的另一个循环:

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