【问题标题】:SSRS: Dynamically Creating New MatrixSSRS:动态创建新矩阵
【发布时间】:2018-02-07 12:55:12
【问题描述】:

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

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

此报告是“月度”报告,显示给定月份每一天的数据。我在报告布局屏幕截图中显示的是,如果用户只为“Level!2!Sample”列选择一个可用值,报告将如何显示。因此,换句话说,它不会像屏幕打印中显示的那样在该列中看到多个值,而是只包含一个不同的值。当只有一个项目可用时,此报告有效,但我需要允许多个选项。

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

我假设我需要使用“Order By”子句来让我的数据看起来正确: 订购方式 级别!2!样品, 名字!3!标题, 月!4!报告月

但是当遇到新的 level!2!sample 记录时,我不确定如何让 SSRS 创建一个新矩阵。

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

【问题讨论】:

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


    【解决方案1】:

    您无法创建这样的新矩阵,但还有其他选择。

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

    稍微不那么简单的选项:

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

    注意事项:

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

    b.如果要在每个 tablix 之间添加间隙,可以在包含子报表的单元格之前或之后添加行。

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

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

    希望这是有道理的。

    【讨论】:

      猜你喜欢
      • 2017-02-15
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多