SSRS报表生成器子报表排序

时间:2019-03-20 16:59:24

标签: sql-server reporting-services

我有一个SSRS报告,其中包含20个子报告。每个子报告代表特定周期中的一个阶段。所有子报表在格式等方面都是相同的,包含该阶段的特定数据并显示开始和结束日期。我想知道报表生成器中是否有一种方法可以使这些子报表具有动态性,并根据其特定的开始日期对它们进行排序,而不是仅显示我在报告中列出的那些子报表?

1 个答案:

答案 0 :(得分:0)

这很简单。

您已经有了主报告和子报告,所以很好。我假设您的子报表带有一个指示阶段的参数。

假设,假设您的子报表接受的参数称为pPhase

  1. 在主报告中,删除所有现有的子报告
  2. 接下来,创建一个数据集,将其命名为dsLoop
  3. 设置dsLoop的数据集查询以按顺序返回阶段,例如SELECT DISTINCT PhaseNumber from myTable ORDER BY PhaseNumber
  4. 现在添加一个表控件,删除标题行和两列,只剩下一个单元格。
  5. 将此单元格设置为所需的宽度,足够用于子报表,高度无关紧要。
  6. 将表的DataSetName属性设置为dsLoop
  7. 在其余单元格中,右键单击并选择Insert --> Subreport。子报表控件将填充该单元格。
  8. 右键单击子报表控件,然后选择Subreport Properties,然后从列表中选择子报表
  9. 仍然在子报表属性中,单击“参数”选项卡,添加一个新参数。
  10. 将“名称”设置为子报表接受的参数名称(在我们的pPhase中  示例)。最后,将“值”设置为包含以下内容的字段的名称  您的参数数据(在我们的示例中为PhaseNumber

就这样...

现在,当您运行主报表时,将在表中为dsLoop中的每个条目创建一行,每一行将包含您的子报表,并且每一行都将传递给特定于每一行的参数。

如果您有任何问题,请告诉我,我将举一个完整的例子。