即使没有结果,如何在分组的 MS Access 报告中显示类别

Posted

技术标签:

【中文标题】即使没有结果,如何在分组的 MS Access 报告中显示类别【英文标题】:How to display a category in a grouped MS Access report even when there are no results 【发布时间】:2018-10-25 23:41:14 【问题描述】:

我在 Microsoft Access 中有一个基于显示多个结果的查询的报告。这些结果在访问报告中按类别分组。有时,查询中的过滤器/条件会导致某些类别没有结果,从而导致该类别不会显示在报告中。

如何让类别仍显示在报告中,并可能在类别组下方显示“未找到”或等效声明(如果适用)?我想要的最终结果是显示所有类别,无论是否有结果。

【问题讨论】:

在查询中使用 LEFT JOIN 或 RIGHT JOIN。 哦,好吧。因此,在我的查询中使用 JOIN 将允许类别显示在报告中,即使没有结果,但无论如何在类别标题下方列出自定义语句,例如“未找到”? @Rene JOINS 并不能普遍解决结果集中数据缺失的问题。也许带有新 LEFT/RIGHT JOIN 的附加查询将成为解决方案的一部分,但绝对不是其本身的答案。 @gluc7 我可以对要做什么给出一个抽象的描述,并且可能会编造一堆虚构的表和列名,但是拥有实际的数据模式甚至可能是示例数据使得创建一个示例如此之多更轻松。如果一张图片值 1000 字,那么示例数据也是如此。 【参考方案1】:

我会说你需要一个 UNION 查询。

假设您对报告的原始查询是qryData

SELECT Category, Data1, Data2
FROM tblData
WHERE foo = bar

要查找查询中不存在的所有类别,您可以使用以下命令:

SELECT c.Category
FROM tblCategory AS c LEFT JOIN qryData AS d ON c.Category = d.Category
WHERE d.Category IS NULL

对于报告,您可以将其结合起来,例如

SELECT Category, Data1, Data2
FROM qryData

UNION ALL

SELECT c.Category, 'None found' AS Data1, NULL AS Data2
FROM tblCategory AS c LEFT JOIN qryData AS d ON c.Category = d.Category
WHERE d.Category IS NULL

ORDER BY Category, Data1

【讨论】:

以上是关于即使没有结果,如何在分组的 MS Access 报告中显示类别的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 报告 - 多个分组问题

没有任何动作显示在 MS Access 中单击的按钮即使没有任何错误显示

MS Access vba中的分组字段

MS Access 报告格式 - 分组

MS Access 记录数始终为 1,即使没有记录

如何在不使用 SQL Server/MS Access 的所有选定列的情况下进行分组和求和?