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