VBA 迭代记录集

VBA To Iterate RecordSet

我正在使用 VBA 迭代记录集,当我使用 RecordCount 功能时它 returns 8(这是准确的) - 但是当我使用 Debug.Print 在每次传递时打印出变量,只处理前 3 个变量。

为什么这个语法停止很短?

Set rs = Db.OpenRecordset("Select statement here)", dbOpenDynaset)
Debug.Print rs.RecordCount
'This prints 8
 With rs
  If Not .EOF And Not .BOF Then
     .MoveLast
     .MoveFirst
     Do While Not .EOF
        fakca = .Fields(0).Value
            Debug.Print fakca
            'only prints the first 3 in the table?
        .MoveNext
     Loop
  End If
End With

.RecordCount 将打印 1, 2, 3101, 4, 5, 6, 7, 9 - 但 Debug.Print fakca 将仅打印 1, 2, 3101 并停止

这样试试:

With rs
    If Not .EOF Then
        .MoveFirst
        Do While Not .EOF
            fakca = .Fields(0).Value
            Debug.Print fakca
            .MoveNext
        Loop
    End If
End With

我认为误解来自于这个用法:

If Not .EOF And Not .BOF Then
     .MoveLast
     .MoveFirst

所以我避免了。使用.BOF的想法是什么?