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

问题描述:

我正在为SSRS设计一个报告。我希望请求报告的用户在生成报告时能够从预先定义的选择中指定应该在报告的Tablix中显示的一些值。在tablix行中显示多值参数的选定值

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

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

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

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

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

+0

= join(parameters!parametername。值,“,”) – Kostya

+0

就我所知,这只会创建一个包含参数中所选值的单个字符串。这不是我所要求的。 –

考虑到来自数据集的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的简单查询。请注意,使用此函数(SQL 2016+)的数据库兼容性级别必须为130或更高。如果这不是你的场景,你可以在Stack Overflow上找到许多字符串分割函数来实现相同的功能。
enter image description here

有趣的问题!

+0

伟大的工作,谢谢!我正在考虑你的第二个解决方案,我更喜欢这个方案,但没有像你这样做过。再次感谢! –