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
的想法是什么?
我正在使用 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
的想法是什么?