【问题标题】:How to pass multiple values to a multivalued parameter in SSRS如何将多个值传递给 SSRS 中的多值参数
【发布时间】:2013-04-03 16:40:19
【问题描述】:

我会尽量通过过度简化报告结构来解释这个问题。报表一包含 1 个名为 ResourceCenter 的组,然后在其下包含一行总计。总计实际上是一个组,但分组是在 SQL 中完成的,并显示在一个详细组中。报告如下所示:

Report 1

ResourceCenter 1
Total1 11 
Total2 4
Total3 8

ResourceCenter2
Total1 12
Total2 11
Total3 6

从这个报告中,我需要深入到另一个包含大量多值参数的报告。对于钻取,我可以对除 EmployeeNumber 之外的所有内容使用单个值。为此,我需要能够将 EmployeeNumbers 列表传递给报表 2 中的多值参数。EmployeeNumbers 当前不存在于报表 1 中的任何数据集或参数中,而是基于 ResourceCenter。因此,如果用户运行了 Report 1 并单击 ResourceCenter 1,我需要能够将与 ResourceCenter 1 关联的 EmployeeNumbers 列表传递给 Report 2 中的多值参数,以使 Report 2 能够正确处理它。

注意:我应该补充一点,我创建了两个 SQL 函数,它们接受 ResourceCenter 的输入,然后返回员工列表。一个是返回单列 EmployeeNumbers 的表值函数。另一个是标量值函数,它将 EmployeeNumbers 作为逗号分隔值返回。然后我有一些自定义代码在后台运行 SQL 函数并返回列表。我在返回 SSRS 可以使用的数据集方面没有取得任何成功,但我已经能够让标量值函数“工作”,因为我可以在虚拟报告上创建一个字段并查看输出。不过,我没有让报告 2 接受逗号分隔的列表。

【问题讨论】:

    标签: reporting-services reportingservices-2005


    【解决方案1】:

    This person 正在执行钻取,并且似乎已经解决了使用多值参数的类似问题。在这种情况下,它必须针对 IN 子句进行格式化。

    =SPLIT(JOIN(Parameters!SomeParameterName.Value,","),",")
    

    如果 Report2 不采用这种格式,您可能需要添加一个单独的单值参数,该参数将接受逗号分隔的字符串,然后您必须对其进行解析。

    【讨论】:

    • 感谢您的回复。我熟悉使用 SPLIT/JOIN 但在这种情况下不起作用。我没有要传递的参数或字段,只有可以传递的值以派生列表。
    • 您可能必须从分隔字符串中派生一个列表。
    • 嗨。您能否详细说明我如何做到这一点?我在原始问题中添加了一条注释,解释了我到目前为止所拥有的内容。听起来我可能走在正确的道路上,但我需要一些帮助才能看到它的实现。
    • 报表 2 接受单值参数 Par1,即逗号分隔的列表。报告 2 也有一个(隐藏的)多值参数 Par2,它有一个默认值“来自查询”,其中查询是您装配的数据集,用于解析逗号分隔值 Par1 并返回单个值的表。然后你使用 Par2。这在 SSRS 2005 和 2008 中看起来有点不同,但我认为它应该适用于任何一个。
    • 所以,我能够按照您的建议进行操作。我在报告 1 中有自定义代码,它从表值创建一个字符串。当用户单击报表 1 中的资源中心时,此字符串将传递给报表 2 中的字符串参数,然后在 SQL 代码中对其进行解析并用于运行报表。这在 Visual Studio 中完美运行,但在部署到服务器时不会运行。没有错误,但没有字符串从报告 1 传递到报告 2。参数显示为空白。
    【解决方案2】:

    我使用的是 SSRS 2016,我的数据集基于存储过程,但将多值参数传递给向下钻取似乎不再是问题。默认情况下,当您选择一个多值参数时,它会为您提供类似 Parameters!ParName(0).Value 的东西,它只会传递第一个值。但是,如果您删除 (0) 并将其保留为参数!ParName.Value,它似乎可以很好地传递所有值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-18
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多