我可以想出几种方法来做到这一点:
数据集级别
不仅仅是返回 DataSet 中基础数据中的相关数据,还应包含您想要在所有情况下显示的所有类别。
例如对于数据库查询来说,这可能是inner
and left join
,即从类似:
select *
from AgeGroup
inner join MyData on ...
to:
select *
from AgeGroup
left join MyData on ...
因此,报告始终显示所有年龄组。哪里有NULL
值,只显示0。
我认为如果您可以控制数据集,这是最好的选择 - 您根本不必更新报告,幸运的是,实际的数据集更改应该很小,仍然只有一个数据集调用,并且它是迄今为止最简单的维护。
硬编码分组到报告中
在这里,您可以为要显示的每个组添加一个表标题行,因此在所有情况下都始终显示这些组。
这里有某种条件表达式来显示值,例如对于每个组行,它将针对该组进行定制:
=Sum(IIf(Fields!AgeGroup.Value = "5-16", Fields!Amount.Value, Nothing)
这不太灵活,当您更改组时需要更新,并且没有那么多布局选项。仍然只有一个 DataSet 调用,因此这是一个优点。
子报告
您可以拥有一个为每个年龄组显示一行的父数据集,然后在每行中嵌入一个子报表,以显示该行所需的数据。
这使您可以灵活地进行布局,但会增加报告的复杂性,并且意味着您需要进行大量可以通过其他选项避免的数据集调用。