Office中国论坛/Access中国论坛

标题: [求助]如何查找是否存在记录并跳出循环 [打印本页]

作者: gdfsslec    时间: 2007-1-24 18:12
标题: [求助]如何查找是否存在记录并跳出循环
下面的两个循环当出现找不到记录的时候怎么跳出循环呢?

  inta = 0
  inid = DateSerial(Year(DateAdd("m", -3, Now())), Month(DateAdd("m", -3, Now())), 1)
  rs.Open "查询结果", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  rs.MoveLast
       Do Until rs.Fields("发生日期") < inid
            rs.MovePrevious
       Loop
       Do Until inta >= (cq - 0.001) * 10000
            inta = inta + rs("出货金额")
            inid = rs("发生日期")
            rs.MovePrevious
       Loop

请高手帮忙看看!谢谢先!
作者: gdfsslec    时间: 2007-1-24 21:59
解决了。先记录第一条,然后判断是否回到了第一条,是则跳出循环。
作者: tz-chf    时间: 2007-1-24 22:54
Do Until rs.Fields("发生日期") < inid
            rs.MovePrevious
Loop
有可能死掉
作者: gdfsslec    时间: 2007-1-25 01:00
大师说的对!第一个循环会死啊!
作者: gdfsslec    时间: 2007-1-25 01:11
改成这样,暂时通过,不知道还有什么隐患?

inta = 0
inidq = DateSerial(Year(DateAdd("m", -6, Now())), Month(DateAdd("m", -6, Now())), 1)
rs.Open "查询结果", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs.MoveFirst
inida = rs("发生日期")
rs.MoveLast
Do Until rs.Fields("发生日期") < inidq
     inid = rs("发生日期")
     If inid = inida Then
        MsgBox inid & "之前没有记录"
        Exit Do
     End If
     rs.MovePrevious
Loop
Do Until inta >= (cq - 0.001) * 10000
     inta = inta + rs("出货金额")
     inid = rs("发生日期")
     If inid = inida Then

         MsgBox inid & "之前没有记录"

     Exit Do
     End If
     rs.MovePrevious
Loop

作者: andymark    时间: 2007-1-25 04:37
没看清你具体用意.试试先用条件筛选

inta = 0
inidq = DateSerial(Year(DateAdd("m", -6, Now())), Month(DateAdd("m", -6, Now())), 1)
rs.Open "select * from 查询结果 where 发生日期< inidq", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If rs.EOF Then
  MsgBox "没有记录"

  Exit Sub
End If

作者: gdfsslec    时间: 2007-1-25 22:22
谢谢andymark大师!

您给的答案正是我需要的,不仅消除隐患,而且速度也大大加快了。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3