在Tablix行中显示多值参数的选定值

时间:2017-07-06 15:53:22

标签: reporting-services rdlc

我正在为SSRS设计一份报告。我希望请求报告的用户能够在生成报告时从预定义的选择中指定一些值,这些值应该显示在报告的Tablix中。

因此,我创建了一个多值参数,并使用我希望用户可以选择的选项填充可用值,并且,正如预期的那样,在生成报告时,用户可以选择一个或多个这些价值观。

但是,我现在要做的是在报告中包含一个Tablix,并为用户选择的多值参数中的每个值显示一行,并在行的第一个单元格中显示该值。 / p>

如果值来自数据表,这显然很容易。我还找到了如何使用JOIN函数在单个文本框中显示所有选定参数值的答案,但我不想这样做。

我能想到的唯一解决方案是手动复制tablix中多值参数中的可用值列表,并将tablix的每一行的可见性链接到多个中相应值的选定状态-value参数,但这不是很优雅,并且增加了维护报告定义所需的工作量。

关于如何做到这一点的任何想法?我知道参数中的选定值只是形成一个数组,但我看不到如何将Tablix绑定到任何不在数据集中的数据,或者如何从参数值创建数据集。

1 个答案:

答案 0 :(得分:1)

考虑到来自数据集的Tablix源,我做了一些实验,以了解如何为您创建低维护解决方案。

选项1 :创建一个带有硬编码选项的数据集,以匹配您的多值参数,并选择参数中存在的那些选项。

示例:

 SELECT val
    FROM (
        SELECT 'opt1' as val
        UNION SELECT 'opt2'
        UNION SELECT 'opt3'
        UNION SELECT 'opt4') a
    WHERE val IN (@Param)

思考:比表上的可见性更容易维护,但报告中仍有两个硬编码的位置。

选项2 :创建一个数据集,选择多值参数并按每个值拆分。这是我的第一个想法,但我遇到了一些问题,确定如何在没有语法错误的情况下实际选择多值。我提出了一种方法,它在报告中创建一个被删除的字符串,然后将该字符串解析回数据集中的行:

步骤1)在数据集属性中,在参数选项卡上,将多个值与JOIN表达式连接在一起 enter image description here

步骤2)创建一个使用新SQL Server 2016函数string_split的简单查询。请注意,使用此功能时,您的数据库兼容级别必须为130或更高(SQL 2016+)。如果这不是您的场景,则可以在Stack Overflow上找到许多字符串拆分功能来实现相同的功能 enter image description here

有趣的问题!