2017-08-29 56 views
0

我在我的数据集中具有以下格式(请参阅数据集布局屏幕截图)。SSRS:动态创建新矩阵

Dataset Layout

我需要这个报告以显示如下内容(见报告版面截图)具有些许差异,但首先让我解释一下。

Report Layout

这份报告是“每月”报告,显示数据为给定月份的每一天。我在“报告布局”屏幕截图中显示的内容是,如果用户仅为列“Level!2!Sample”选择了一个可用值,报告将如何显示。换句话说,不是如屏幕打印中所示在该列中看到多个值,而是只包含一个不同的值。只有一个项目可用时此报告有效,但我需要考虑多个选项。

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

我认为我会需要使用“排序依据”子句,以获得我的数据寻找正确:! 顺序按 2级样品, 名3标题, 月4 ReportMonth

!!!

但我不确定如何在遇到新的level!2!示例记录时使SSRS创建新的矩阵。

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

回答

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. 设置报表参数的水平!2!示例。

注:

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

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

基本上,您的新报表充当一个循环,并为参数列表中的每个选定项目创建一行,每行包含一个完整的子报表,其中包含传递给它的当前行的参数。最后的结果是,您将为每个选定的条目获得一个“新”表格。

希望是有道理的。

+0

很好的解释。感谢帮助.... –