【问题标题】:SSRS How to see multi value parameter in subscriptionSSRS 如何在订阅中查看多值参数
【发布时间】:2020-05-28 13:47:04
【问题描述】:
我尝试从查询中获取值或指定值,只要参数为多值,我在尝试订阅时就看不到数据。
我的请求看起来像:
select id from employee where canal in(@canal)
我该怎么办,我完全卡住了,
当我进行研究时,我看到了数据驱动订阅,但我显然无法访问它,不知道这是否有帮助
【问题讨论】:
标签:
sql-server
reporting-services
【解决方案1】:
首先我要说对不起,这不是一个令人愉快的答案。您遇到了内置功能的限制。值得庆幸的是,有解决方法。
问题是您只能将 1 个值传递给数据驱动订阅。因此,您使用了一个逗号分隔的列表并获取查询/报告以解析出这些值。
-
如果您有或可以在数据库中创建Split 函数,这是一个不错的选择。这将是一个表值的用户定义函数,并且已经有一些容易找到的示例。无论如何,此功能通常也适用于其他用例。这样,您的 SQL 将显示为:
斯普利特的运河在哪里(@canal)
-
SSRS 非常适用于 SQL Server,但是当您使用 ODBC 连接时,参数支持是有限的。您可以使用在这些情况下所需的相同多值参数解决方法。
- 在“数据集属性”>“参数”选项卡中,使用类似这样的表达式将值组合成一个由逗号包围的单个逗号分隔字符串。
="," + Join(Parameters!canal.Value, ",") + ","
其中@like '%,' + canal + ',%'
基本上,这会逐行搜索字符串中包含的值。
在任何一种情况下,数据驱动订阅设置中的查询都需要返回逗号分隔的字符串。然后您可以在报告参数值字段中选择该列。希望这会有所帮助!