我有两个相互关联的表:QUOTERun
和 QUOTERunResults
。 QUOTERun
包含特定报价所需的所有项目。 QUOTERunResults
包含所有供应商响应的记录。我有一个程序可以分析这些响应并选择最合适的供应商,并将名为 Prefered
的字段设置为 true。有时没有供应商会工作。我需要创建 QUOTERun
中所有记录的列表,这些记录在 QUOTERunResults
中没有匹配的记录被标记为优先。
这是我目前的情况:
Set rs1 = CurrentDb.OpenRecordset("SELECT ReferenceNumber FROM [QUOTERun] WHERE RunID = " & TempRunID, dbOpenDynaset)
Set rs2 = CurrentDb.OpenRecordset("SELECT ReferenceNumber, Preffered FROM [QUOTERunResults] " & _
"WHERE RunID = " & TempRunID & " AND Preffered = True", dbOpenDynaset)
If (rs2.RecordCount = 0) Then
TempListNotComplete = "NONE OF THE VENDOR RESPONSES HAD ENOUGH STOCK. NO RECORDS HAVE BEEN MARKED AS PREFFERED."
ElseIf (rs1.RecordCount <> 0) Then
rs1.MoveFirst
Do While rs1.EOF <> True
rs2.FindFirst "ReferenceNumber = " & rs1.Fields("[ReferenceNumber]").value
If (rs2.Fields("[ReferenceNumber]").value <> rs1.Fields("[ReferenceNumber]").value) Then
If (TempListNotComplete = "") Then
TempListNotComplete = rs1.Fields("[ReferenceNumber]").value
Else
TempListNotComplete = TempListNotComplete & ", " & rs1.Fields("[ReferenceNumber]").value
End If
End If
rs1.MoveNext
Loop
End If
是否有更有效的方法来完成上述操作?
最佳答案
您可以在查询设计窗口的 SQL View 中创建查询:
SELECT a.ReferenceNumber
FROM
(SELECT ReferenceNumber
FROM [QUOTERun]
WHERE RunID = [Enter TempRunID]) a
LEFT JOIN
(SELECT ReferenceNumber, Preffered
FROM QUOTERunResults
WHERE RunID = [Enter TempRunID] AND Preffered = True) b
On a.ReferenceNumber=b.ReferenceNumber
WHERE b.ReferenceNumber Is Null
上面应该显示第一个派生表中不在第二个派生表中的所有记录。
关于vba - 查找不包含在另一个查询中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11904405/