如何从“基础”SSRS报告向辅助报告提供报告参数?

时间:2016-06-10 23:19:59

标签: stored-procedures reporting-services parameter-passing rdl query-parameters

除了特定参数的值之外,我需要有几个(四个)相同的报告。我不希望用户必须手动输入所有参数。

当他们输入以下参数时:

BEATLES
-------
BegDate: 1962
EndDate: 1970
Unit: Beatles

我希望使用以下参数运行四个报告:

LENNON
------
BegDate: 1962
EndDate: 1970
Unit: John Lennon

MCCARTNEY
---------
BegDate: 1962
EndDate: 1970
Unit: Paul McCartney

HARRISON
--------
BegDate: 1962
EndDate: 1970
Unit: George Harrison

STARR
-----
BegDate: 1962
EndDate: 1970
Unit: Ringo Starr

因此,当用户输入三个参数时,前两个(“日期”)参数以及适当的辅助报告“单位”参数(“John Lennon”到第一个参数,“Paul McCartney”到第二个,等等。通过。

报告“机器人”在人们为单位进入“甲壳虫乐队”之后对自己说:“哦,他进入'甲壳虫乐队'!所以我将'约翰列侬'作为单位参数传递到第一份报告,'保罗McCartney'作为第二份报告的单位参数,“(等)。

我尝试通过在几乎相同的存储过程中提供文字值来实现这一点(在某种程度上阐述here,但它根本不起作用。

所以我正在寻找其他方法在同一表面上放置多个相关但不同的报告。最终目标是确保在运行和导出为Excel时,每个报告(LENNON,MCCARTNEY等)都在Excel文件中显示在自己的工作表上。

但是现在,我只需要知道如何将适当的参数从一个报告(“BEATLES”)传递给其他报告(“LENNON”等)。我认为这些都是独立的报告,所有这些都嵌入在一个报告项目/页面中,但也许它们需要是一个报告,然后是一堆子报告(如果你正在读这个,你可能比我的内部工作知道得更好和SSRS的变幻莫测。)

那么,我如何从“基础”SSRS报告中向辅助(子?)报告提供报告参数 - 还是有另一种/更好的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

我有一个可能适合您的解决方案。

使用您在上面提到的3个参数创建报告。在报告中添加一个数据集,该数据集将获取3个参数并返回与此类似的数据集:

Band      Member          Start   End     Page
Beatles   John Lennon     1962    1970    LENNON
Beatles   Paul McCartney  1962    1970    MCCARTNEY
…

在报告正文中,从工具箱中添加一个列表。将列表的数据集名称设置为上面数据集的名称。在Row Groups中,将有一个标记为(Details)的行。右键单击该行,然后从上下文菜单中选择“组属性”。添加新组,然后选择Page作为要分组的列。转到“组属性”对话框的“分页符”部分,然后选中在每个组实例之间。如果您愿意,可以添加一个排序,然后单击“确定”按钮。

确保选中“行组”中的(详细信息)行,然后在“属性”中查找“组”选项。展开它,然后查找“页面名称”设置。像这样在字段中添加表达式(下面的屏幕截图):

=Fields!Page.Value

Properties Screen Cap

这将使报告中的每个页面都具有此值作为名称。因此,当您将其导出到Excel时,每个工作表将根据此值具有自己的名称。

在列表中添加文本框,并将其值设置为每页上所需的字段。在这种情况下,PageStartEndMember。如果您想要匹配问题中的内容,请添加标签。

只要数据集在您选择正确的参数时返回4个预期的行,您最终应该得到一个包含4个页面的报表,每个页面对应一个成员。当您将其导出到Excel时,您将有4张纸,它们应具有Page字段中的名称。

希望这能帮到你!

答案 1 :(得分:0)

基于所写的Jupyter Scala,我就是这样做的:

我添加了一个子报表,然后将现有报表拖到它上面。然后我选择了上下文菜单项"子报告属性"并添加了一个参数(" Unit"),为其提供了一个"硬编码/烘焙"值(" CHOPHOUSE")与用户为主报告提供的值不同。

然后,由于我希望保留现有报告中相同的日期值,我向子报告添加了两个参数,并将它们设置为使用与主报告中使用的日期范围相同的值,方法是选择"式" (" fx")按钮并双击相应的参数以用作传入(tramp)值:

here

有效。

我在类似问题enter image description here的答案中提供了更多详细信息。