匹配 SQL Select 之后的上一条记录

Match previous record after SQL Select

我正在尝试构建此代码,但我不知道如何处理此代码的第二部分。在开始时,SQL 中的代码从 table 中选择记录的 caseid、程序和语言,其中分配给的 Intake WHERE assignedto 是 Null。这工作得很好。

选择记录后,我需要另一个代码来检查所选记录的 caseid 是否与 PREVIOUS 记录的 caseid 匹配。这就是我迷路的地方。这是我所在的位置:

Set db = CurrentDb

strSQL = "SELECT TOP 1 IntakeID, caseid, [Program], [language] FROM Intake WHERE assignedto Is Null"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

i = rs!caseid
If DLookup("caseid", "Intake", i) Then

Call GetPreviousWorker

我知道我没有正确使用 DLookup,我试图找到匹配的记录,但显然失败了哈哈。感谢任何可以提供帮助的人:)

这是你要找的吗...

     if Dlookup("caseid","intake","caseid = " & caseid &  
     " AND Intake <> " & rs.Fields("IntakeID")) then
       ' your Code
     end if

请注意,Dlookup 仅 returns 符合条件的第一次出现...如果您之前有超过 1 条记录,那么您需要另一种方法

为什么不只是 DCount caseid?

If DCount("caseid", "Intake", "caseid=" & i) > 1 Then
    Call GetPreviousWorker
    ...

我认为IntakeIdIntaketable

中的主键自增1

所以你的要求可以达到如下

Set db = CurrentDb

strSQL = "SELECT TOP 1 IntakeID, caseid, [Program], [language] FROM Intake WHERE assignedto Is Null"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

 While Not rs!EOF

strSQL = "SELECT IntakeID, caseid, [Program], [language],[other required fields]   
          FROM Intake WHERE IntakeId=" & rs!IntakeID - 1
Set rs1 = db.OpenRecordset(strSQL, dbOpenDynaset)

 if rs!caseid = rs1!caseid Then

  do what in this case..update or something..

else //means current record case id is not equal to previous one
 ..
 End IF
 rs.MoveNext
Wend

希望对您有所帮助