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

Display selected values of multi-value parameter in tablix rows

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

因此,我创建了一个多值参数,并使用我希望用户能够 select 的选项填充可用值,而且,正如预期的那样,当生成报告时,用户是能够 select 这些值中的一个或多个。

但是,我现在想要做的是在报告中包含一个 tablix,并为用户 selected 的多值参数中的每个值显示一行,该值显示在行的第一个单元格。

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

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

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

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

选项 1:创建一个包含硬编码选项的数据集,以匹配您的多值参数和 select 那些存在于参数中的选项。

示例:

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

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

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

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

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

有趣的问题!