我正在尝试构建此代码,但我不知道如何处理此代码的第二部分。一开始SQL中的代码选择了一个记录的caseid,程序和来自表Intake WHERE的语言为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,我试图找到一个匹配的记录并且明显失败了哈哈。感谢任何可以提供帮助的人:)
答案 0 :(得分:2)
我认为IntakeId
是Intake
表中递增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
希望这有帮助
答案 1 :(得分:0)
这就是你在寻找......
if Dlookup("caseid","intake","caseid = " & caseid &
" AND Intake <> " & rs.Fields("IntakeID")) then
' your Code
end if
请注意,Dlookup仅返回与条件匹配的第一个出现...如果您有超过1个先前记录,那么您需要另一种方法
答案 2 :(得分:0)
为什么不只是DCount
caseid?
If DCount("caseid", "Intake", "caseid=" & i) > 1 Then
Call GetPreviousWorker
...