首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA迭代RecordSet

VBA迭代RecordSet
EN

Stack Overflow用户
提问于 2017-11-03 15:55:41
回答 1查看 770关注 0票数 0

我使用VBA来迭代一个记录集,当我使用RecordCount特性时,它返回8(这是准确的)--但是当我在每次传递时使用Debug.Print输出变量时,只处理前3个变量。

为什么这个语法会停止呢?

代码语言:javascript
复制
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并停止。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-03 16:31:28

就像这样:

代码语言:javascript
复制
With rs
    If Not .EOF Then
        .MoveFirst
        Do While Not .EOF
            fakca = .Fields(0).Value
            Debug.Print fakca
            .MoveNext
        Loop
    End If
End With

我认为这个问题来自于这样的用法:

代码语言:javascript
复制
If Not .EOF And Not .BOF Then
     .MoveLast
     .MoveFirst

因此,我避免了这种情况。使用.BOF的想法是什么?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47099792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档