SSRS:动态创建新矩阵

时间:2017-08-29 23:31:36

标签: sql-server reporting-services ssrs-tablix

我的数据集中有以下格式(请参阅数据集布局屏幕截图)。

Dataset Layout

我需要此报告显示如下(请参阅报告布局屏幕截图),但有点不同,但首先让我解释一下。

Report Layout

此报告是每月一次"报告显示给定月份每天的数据。我在报告布局屏幕截图中显示的是,如果用户仅为列#34; Level!2!Sample"选择一个可用值,报告将如何显示。换句话说,不是在屏幕打印中显示该列中的多个值,而是只包含一个不同的值。只有一个项目可用时,此报告才有效,但我需要允许多个选项。

我需要做的是能够为" Level!2!Sample"的多个值显示这样的数据,并且每次新的" Level!2!Sample"遇到它,它会创建一个新的矩阵,如屏幕打印所示。因此,如果此列有四个不同的项目,我将在报告中显示四个不同的表格,每个表格显示" Level!2!Sample"的给定不同值的数据。柱。

我认为我需要使用" Order By"使数据正确显示的子句: 订购      等级!2!样品,      名字!3!标题,      一个月!4!ReportMonth

但我不确定如何在遇到新级别!2!样本记录时让SSRS创建新矩阵。

我希望我的解释对我要做的事情有意义。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:1)

您无法创建类似的新矩阵,但还有其他选项。

简单选项:创建一个按Level!2分组的大矩阵!样本并在组之间分页。这显然意味着您最终会在示例场景中找到4页,这可能并不理想。

稍微不那么简单的选择:

  1. 创建新报告
  2. 包括您在当前报告中所做的参数。
  3. 添加一个数据集(让我们称之为dsLoop),该数据集返回单个列,每个选定参数条目返回1个记录。这可能类似于SELECT DISTINCT Level!2!Sample FROM myTable WHERE Level!2!Sample IN(@myParameter)
  4. 添加一个包含单列和单行的表格,并将其宽度设置为报表/页面的宽度。
  5. 将表格的数据集设置为dsLoop
  6. 在表格的单元格中插入子报表并将子报表属性设置为指向原始报表
  7. 将子报表参数设置为Level!2!数据集中的示例。
  8. 注意:

    一个。您可以删除原始报告中的可用值和相关数据集,因为不再需要这些值(可选)

    湾如果要在每个Tablix之间添加间隙,可以使用子报表在单元格之前或之后添加行。

    基本上,您的新报表充当循环,并在参数列表中为每个选定项创建一行,每行包含一个整个子报表,其中包含传递给它的当前行的参数。

    最终结果是,您将为每个选定的条目获得一个“新”表。

    希望这是有道理的。