如何根据同一个表上的查询结果在表/记录集中查找记录?

时间:2013-03-21 10:50:38

标签: ms-access access-vba

我正在尝试根据两个条件返回警报系统的记录。 第一个条件是在系统中预订明天的日期[Date()+ 1],类型值为B.如果该JobNumber还具有A的类型值(在另一个记录中),则结果字段的值为“未批准“我们需要返回警报。

示例表:

JobNumber   Type    Company Date            Result
58129       B       3       22/03/2013      
58129       A       3       20/03/2013      Not Approved
58129       C       3

到目前为止,我已经能够在VBA中创建一个SQL查询,以返回第一个条件的结果,并循环遍历结果以返回相关的JobNumbers。如何将这些JobNumbers作为第二个SQL查询的条件插入,还是可以将所有条件合并到一个SQL语句中?

到目前为止

我的SQL:

strSQL1 = "SELECT I.JobNumber, I.Type, I.Company, I.Date, I.Result " & _
          "FROM tblInspection I " & _
          "WHERE (((I.Type)='B') AND ((I.Date)=Date()+1));"

strSQL2 = "SELECT I.JobNumber, I.Type, I.Company, I.Date, I.Result " & _
          "FROM tblInspection I " & _
          "WHERE (((I.Type)='A') AND ((I.Result)<>'approved'));"

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以从相同或另一个表中获取字段。如果返回多行,则会出错,但是否将返回多行取决于您的数据。如果可能,您需要添加另一个标准,例如日期。

SELECT I.JobNumber, I.Type, I.Company, I.Date, I.Result,
    (SELECT Result 
     FROM tblInspection q 
     WHERE q.JobNumber=i.JobNumber 
     AND Result="Not Approved" 
     AND Type="A")
As ResultA
FROM tblInspection I
WHERE I.Type='B' AND I.Date=Date()+1