【问题标题】:Display selected values of multi-value parameter in tablix rows在 tablix 行中显示多值参数的选定值
【发布时间】:2017-07-06 15:53:21
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • =join(parameters!parametername.Value,",")
  • 据我所知,这只会创建一个包含从参数中选择的值的单个字符串。这不是我需要的。

标签: reporting-services rdlc


【解决方案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 表达式将多个值连接在一起

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

有趣的问题!

【讨论】:

  • 干得好,谢谢!我正在按照我更喜欢的第二个解决方案的思路进行思考,但是并没有像您对它所做的那样接近。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多