Ms access 如何在ACCESS查询中定义从另一个表中的字段获取的条件?

Ms access 如何在ACCESS查询中定义从另一个表中的字段获取的条件?,ms-access,criteria,Ms Access,Criteria,我创建了一个带有日期过滤条件的简单查询,我在查询的设计表单中手动键入了该查询 SELECT tbl_CountryDefs.Country_Name, tbl_CRatings.CReportDate, tbl_CRatings.CRating FROM tbl_CRatings INNER JOIN tbl_CountryDefs ON tbl_CRatings.CCountry = tbl_CountryDefs.CMAPPING WHERE (((tbl_CRati

我创建了一个带有日期过滤条件的简单查询,我在查询的设计表单中手动键入了该查询

    SELECT tbl_CountryDefs.Country_Name, tbl_CRatings.CReportDate, tbl_CRatings.CRating
    FROM tbl_CRatings INNER JOIN tbl_CountryDefs ON tbl_CRatings.CCountry = tbl_CountryDefs.CMAPPING
    WHERE (((tbl_CRatings.CReportDate)="2013-JAN"))
    ORDER BY tbl_CountryDefs.Country_Name;

如果我创建了一个新表,其中的条件定义为字段,那么如果没有任何宏或VBA在该查询中定义条件以在新表中查找字段的值,我怎么能这样做呢?

除非我误解了,否则您可以通过一个简单的
DLookup
来实现所需的功能。如果您创建了一个新表(比如称为QueryCriteria,其中有一个文本字段称为ReportDate),那么以下内容应该可以使用:

SELECT tbl_CountryDefs.Country_Name, tbl_CRatings.CReportDate, tbl_CRatings.CRating
FROM tbl_CRatings INNER JOIN tbl_CountryDefs ON tbl_CRatings.CCountry = tbl_CountryDefs.CMAPPING
WHERE tbl_CRatings.CReportDate = DLookup("ReportDate","QueryCriteria")
ORDER BY tbl_CountryDefs.Country_Name;

在本例中,如果
QueryCriteria
表中的
ReportDate
的值为
2013-JAN
,它将实现与原始硬编码查询相同的结果。

您希望整行
在哪里(((tbl_CRatings.CReportDate)=“2013-JAN”)
,如果没有VBA,这是不可能的,或者仅仅是2013-JAN,哪一种可能更容易通过其他方式完成?为什么不加入它会更快?此外,我对看起来是一个单字段单行表的值也有一些疑问。联接也可以工作(而且可能更快),但当只有一个条件时,这似乎是一个快速的解决方案,并且使查询的结构基本保持不变(因此很容易理解)。当您在许多查询中使用相同的参数值时,一个单字段、一行的“条件”表是很有价值的,因为您只有一个地方可以更新它。谢谢,这很有效,其中tbl_CRatings.CReportDate=DLookup(“ReportDate”、“QueryCriteria”)(不带“”)-很高兴您得到了排序。编辑答案以反映:)