我有一个包含 20 个子报告的 SSRS 报告。每个子报表代表特定周期中的一个阶段。所有子报表的格式等都相同,包含该阶段的特定数据并显示开始和结束日期。我想知道报表生成器中是否有一种方法可以让这些子报表是动态的,并根据其特定的开始日期进行排序,而不仅仅是显示我在报表中列出的子报表?
这很简单。
您已经有了主报表和子报表,所以这很好。我假设您的子报表采用指示阶段的参数。
假设这一点,假设您的子报表接受的参数称为pPhase
- 在主报表中,移除所有现有的子报表
- 接下来,创建一个数据集,我们称之为
dsLoop
dsLoop
数据集查询设置为按顺序返回阶段,例如SELECT DISTINCT PhaseNumber from myTable ORDER BY PhaseNumber
- 现在添加一个表控件,删除标题行和两列,只留下一个单元格。
- 根据需要使此单元格尽可能宽,宽度足以容纳您的子报表,高度无关紧要。
- 将表的
DataSetName
属性设置为dsLoop
- 在其余单元格中,右键单击并选择"
Insert --> Subreport
"。子报表控件将填充单元格。 - 右键单击子报表控件并选择
Subreport Properties
,从列表中选择您的子报表 - 仍在子报表属性中,单击参数选项卡,添加新参数。
- 将"名称"设置为子报表接受的参数名称(
pPhase
在我们的 示例)。最后,将 Value 设置为包含以下内容的字段的名称 您的参数数据(在我们的示例中PhaseNumber
)
就是这样。。。
现在,当您的主报表运行时,将在表中为dsLoop
中的每个条目创建一行,每行将包含您的子报表,并且每行都将传递特定于每一行的参数。
如果您有任何问题,请告诉我,我将发布一个完整的示例。