vba - 查找不包含在另一个查询中的记录

标签 vba ms-access

我有两个相互关联的表:QUOTERunQUOTERunResultsQUOTERun 包含特定报价所需的所有项目。 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/

相关文章:

vba - 在启动之间保留 VBA/Excel 中的库引用

vba - 在 MS Word 中打印字体的所有字形

ms-access - 在 Microsoft Access 中将多个人关联到一个地址的最佳方式是什么?

sql - 如何解决 MS Access 2010 中的 "Data type mismatch in criteria expression"错误?

sql-server - 无法从Access导入数据到MS SQL Server

vba - VBA中Excel文件的文件名

sorting - 排序而不移动格式

vba - 在已经打开的 excel 上使用 VBS 运行宏

c# - 标签从数据库中放入随机值 C#

excel - workbooks.connections.add2 给出运行时错误 5 : Invalid procedure call or argument