【问题标题】:How can I supply report parameters to ancillary reports from a "base" SSRS report?如何从“基础”SSRS 报告向辅助报告提供报告参数?
【发布时间】:2016-06-17 06:41:40
【问题描述】:

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

当他们输入以下参数时:

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

所以当用户输入三个参数时,前两个(“日期”)参数以及适当的辅助报告“单位”参数(“约翰列侬”到第一个,“保罗麦卡特尼”到第二个等)被传递。

报告“机器人”在人员为 Unit 输入“Beatles”后对自己说:“哦,他输入了 'Beatles'!所以我会将 'John Lennon' 作为 Unit 参数传递给第一个报告'Paul McCartney' 作为第二份报告的单位参数,“(等)。

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

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

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

那么,我如何从“基础”SSRS 报告向辅助(子?)报告提供报告参数 - 或者有其他/更好的方法来实现这一点?

【问题讨论】:

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


【解决方案1】:

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

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

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

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

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

=Fields!Page.Value

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

在列表中添加文本框并将它们的值设置为您在每页上需要的字段。在这种情况下,PageStartEndMember。如果您希望与您的问题相匹配,请添加标签。

只要数据集在您选择正确的参数时返回预期的 4 行,您最终应该会得到一个有 4 页的报告,每个乐队成员一个。将其导出到 Excel 时,您将拥有 4 张工作表,它们的名称应来自 Page 字段。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    根据here 所写的内容,我是这样完成的:

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

    然后,由于我想保留现有报告中的相同日期值,我向子报告中添加了另外两个参数,并通过选择"formula" ("fx") 按钮并单击 2 次要用作传入(tramp)值的适当参数:

    这行得通。

    我在回答类似问题here时提供了更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 2019-01-08
      • 2014-07-20
      • 1970-01-01
      相关资源
      最近更新 更多