5

我会尽量通过过度简化报告结构来解释这个问题。报表一包含 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 接受逗号分隔的列表。

4

2 回答 2

7

此人正在进行钻取,似乎已经解决了一个多值参数的类似问题。在这种情况下,它必须针对 IN 子句进行格式化。

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

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

于 2013-04-03T18:21:02.980 回答
0

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

于 2020-01-28T23:02:19.017 回答