![](/img/trans.png)
[英]SSRS - Cannot get report rows to highlight that match the values selected in multi-value parameter
[英]Display selected values of multi-value parameter in tablix rows
我正在为SSRS设计报告。 我希望请求报告的用户能够在生成报告时从预定义选择中指定一些值,这些值应显示在报告的Tablix中。
因此,我创建了一个多值参数,并在“可用值”中填充了我希望用户能够选择的选项,并且,正如预期的那样,在生成报告时,用户能够选择一个或多个这些值。
但是,我现在想做的是在报表中包括一个tablix,并为用户选择的多值参数中的每个值显示一行,并在该行的第一个单元格中显示该值。
如果这些值来自数据表,这显然很容易。 我还找到了有关如何使用JOIN
函数在单个文本框中显示所有选定参数值的答案,但我不想这样做。
我能想到的唯一解决方案是手动复制tablix中多值参数中的可用值列表,并将tablix每行的可见性链接到multi-value参数中相应值的选定状态,但这不是很好,并且会增加维护报告定义的工作量。
有关如何执行此操作的任何想法? 我知道从参数中选择的值只是形成一个数组,但是我看不到如何将Tablix绑定到数据集中没有的任何数据,或者如何从参数值创建数据集。
考虑到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表达式连接在一起
步骤2)创建一个使用新的SQL Server 2016函数string_split的简单查询。 请注意,您的数据库兼容性级别必须为130或更高才能使用此功能(SQL 2016+)。 如果这不是您的情况,则可以在Stack Overflow上找到许多字符串拆分函数来实现相同的目的。
好玩的问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.