不循环 MS Access

Not Looping MS Access

我不确定如何处理这个循环。我见过各种方式并以各种方式尝试了 If Not (rs.EOF And rs.BOF) Then 但它只经过一次编码。此代码应该遍历满足 SELECT 查询条件的 table 摄入量。肯定有多个记录满足此查询,因此它应该循环不止一次。此代码确实在第一次工作并给出了消息框,但随后就结束了。谢谢:)

Set db = CurrentDb

i = Me.searchlat

strSQL = "SELECT IntakeID, Program, applicationdate From Intake 
WHERE Status Not Like 'Approved' And Status Not Like 'Denied' And Status 
Not Like 'Withdrawn' And Status Not Like 'Incomplete Application' And Status 
Not Like 'No Show' AND workerid = '" & i & "'"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

While Not rs.EOF

If Me.Program = "CF" And Me.applicationdate < Date - "25" Then
MsgBox ("The following cases are nearing 30 days pending:" & " " & Me.caseid)
rs.MoveNext
End If
Wend

只需将 rs.MoveNext 移到 If 语句之外,但仍在循环中。

目前,代码进入循环,在 if 条件不适用的地方,退出循环(因为它没有看到移动到下一条记录的命令)。

此外,有时它会有所帮助,在 While/Wend 循环之前添加以下内容以确保记录集位于开头:

rs.MoveLast
rs.MoveFirst

在您的 select 查询中,您不在 select caseid 中。将您的 select 查询更改为

"SELECT IntakeID, Program, applicationdate,caseid From Intake.......

并检查。

 strSQL = "SELECT IntakeID, Program, 
applicationdate, caseid From Intake WHERE Status Not Like 'Approved' 
And Status Not Like 'Denied' And Status Not Like 'Withdrawn' 
And Status Not Like 'Incomplete Application' And Status 
Not Like 'No Show' AND workerid = '" & i & "'"
    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
    While Not rs.EOF


If Me.Program = "CF" And Me.applicationdate < Date - "25" Then
    MsgBox ("The following cases are nearing 30 days pending:" & " " & rs!caseid)
End If
rs.MoveNext

Wend