匹配 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
...
我认为IntakeId
是Intake
table
中的主键自增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
希望对您有所帮助
我正在尝试构建此代码,但我不知道如何处理此代码的第二部分。在开始时,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
...
我认为IntakeId
是Intake
table
所以你的要求可以达到如下
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
希望对您有所帮助