如何在DAO Recordset中跳过SkipRow字段值为1的行?
问题:遍历直通查询结果时跳过指定行
我需要遍历直通查询返回的所有行。返回结果要么为空,要么包含2行及以上数据,其中有一行的SkipRow列值为1。目标是只遍历所有非可跳过的行。
我尝试了下面的代码,但遇到SkipRow=1的行时,执行rs.MoveNext后循环会继续执行后续处理逻辑,没法直接跳过该行并重新判断下一行。
原代码:
Dim rs As DAO.Recordset Do While Not rs.EOF intSkipRow = rs("SkipRow") If intSkipRow = 1 Then rs.MoveNext End If 'Do stuff for any real rows rs.MoveNext Loop
解决方案
调整逻辑,先判断当前行是否需要跳过,若是则移动到下一行并直接重启循环判断,避免执行后续处理代码。修正后的代码如下:
Dim rs As DAO.Recordset Do While Not rs.EOF ' 先检查当前行是否需要跳过 If rs("SkipRow") = 1 Then rs.MoveNext Continue Do ' 直接回到循环开头,重新检查是否到记录末尾 End If ' 在这里处理非跳过行的业务逻辑 ' Do stuff for any real rows ' 处理完成后移动到下一行 rs.MoveNext Loop
逻辑说明
- 遇到SkipRow=1的行时,先移动到下一行,再用
Continue Do直接回到循环起始的EOF判断,跳过后续处理步骤 - 非跳过的行会正常执行处理逻辑,之后再移动到下一行
- 这样就能保证只有SkipRow≠1的行会被处理
内容的提问来源于stack exchange,提问作者TheMortiestMorty
相关产品推荐
相关产品推荐

