MS Access 2007 SQL with WHERE and GROUP BY不能正确使用FILTER



我有一个查询看起来像这样的SQL:

SELECT a,b,c
  FROM tableA
 WHERE d = "something"
 GROUP BY a,b,c

查询本身运行良好。

当在报表中使用查询时,它工作得很好。

如果我尝试使用滤镜,比如

d="something" and e="whatever"

到报告的OnActivate事件中报告的记录源,它提示"e"的值,并且不选择任何东西,即使我在"e"的提示符中输入"whatever"。

我的理解是,"过滤器"只是查询的WHERE子句,但似乎在合计查询(即包含GROUP BY子句)的情况下,它更像是HAVING子句。是这样吗?还有别的办法吗?


为了回答我的第二个问题,我通过在报告的OnOpen事件中构建整个SELECT语句来绕过它,然后使用它来设置RecordSource。但是,我仍然想了解当SELECT语句中有GROUP BY子句时过滤器是如何工作的。

Report的Filter属性只看到查询的最终结果,而不是它的基表。因此,虽然您可以在查询中的WHERE子句中使用列d(或基表的任何列),但它不会投射到SELECT语句中,因此您不能在Report过滤器上引用列d或e。老实说,我不确定您是否可以像这样在这里做您想做的事情,这是影响查询中的预聚合标准。

最新更新