对于Next循环,每次都在极限处继续

时间:2016-08-18 18:37:44

标签: vb.net vba for-loop

我正在处理一个应用程序,出于某种原因,我有一个问题需要理解。我的代码看起来像这样......

dim number as integer



number = rs.recordcount (only 1 record - so number = 1)
for x = 1 to Number
'stuff
'stuff
    rs.moveNext
Next 

我假设一旦它到达rs.movenext然后转到Next,它应该只是退出循环 - 但它似乎回到循环的顶部,即使没有记录。任何人都知道为什么会这样?

2 个答案:

答案 0 :(得分:3)

RecordCount返回已读取的记录数或类似内容 - 它不返回记录总数,该值在记录集具有之前是未知的已被迭代。

因此For...Next循环无法有效地迭代记录集。

尝试使用While循环:

While Not rs.BOF And Not rs.EOF
    'stuff
    rs.MoveNext
Wend

答案 1 :(得分:1)

你的循环没有终止的主要原因是你没有给它任何导致它终止的条件。

此外,VB每次循环都不检查循环限制。它只在开始时检查它。即使Number的值发生了变化,以下代码仍会打印100次:

Dim Number As Integer = 100
For x As Integer = 0 To Number
    Console.WriteLine(x)
    Number = 99
Next