sql - 使用 SSRS 报告将 csv 列表传入 SQL 数据集的参数值

标签 sql csv reporting-services param

我制作了一个 SSRS 报告,其中有一个文本字段参数,用户将在其中输入逗号分隔的字符串值列表。该列表将被输入到报表数据集中的 SQL 查询中,其中包含: ...WHERE TheField in (@myCSVParam)。

如果我从字段中传递单个值,它会起作用,但如果我从字段中传递 csv 列表,则报告会说该值不存在。

我认为它将 csv 列表视为单个值,因此没有数据返回。

如何转换该 csv 列表并转换为 sql IN 过滤器的可用参数?

最佳答案

我今天正在寻找一种方法来做到这一点,并且有很多建议需要构建一个存储过程来处理这个问题,但我发现这个解决方案有点困惑。我终于想出了自己的、非常简单的解决方案。

因此,假设您希望用户能够在单个文本框中输入多个销售订单,并以逗号分隔,例如:61JF073, 61SW073, 61SW074

我的第一个报告参数名为“OrderNo”,描述“Order Nos(以逗号分隔)”。数据类型=“文本”,并且不检查任何内容。

我的第二个参数将从第一个参数中获取列表,并创建一个“多个值”列表,您将能够在 SQL 查询中使用该列表。

第二个参数:名称=“OrderNos”,类型=“Text”。选中“允许多个值”。参数可见性=“内部”(用户不需要看到这个)。 可用值 = 无 默认值 = 指定值 添加一个值: =Split(Replace(Parameters!OrderNo.Value,"",""),",")

我正在使用“替换”功能来删除所有空格,因为用户可能会在逗号后输入空格,这会影响输出。

现在您的 SQL 查询可以包含“IN”子句来过滤结果。

选择订单号、销售 ID、销售名称 来自销售订单 WHERE OrderNo IN (@OrderNos)

数据将在 SQL Server 中进行过滤,而不是在 SSRS 报告中进行过滤,这是在应用过滤器之前保存 SSRS 报告以检索整个表的首选方法。您只想检索报告所需的数据。

我希望这会有所帮助,因为它对我来说是一个救星,因为我的销售订单表有数千行。

关于sql - 使用 SSRS 报告将 csv 列表传入 SQL 数据集的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244656/

相关文章:

php - MYSQL中如何连接所有三个表?

mysql - 如何在运行 SQL Update 语句之前对其进行测试?

mysql - 如何在innodb中实现隐式行级锁定?

csv - 使用展开数组加载 CSV 无法执行任何操作...

shell - 将 csv 文件的前 x 行读取到新的输出文件中?

PHP排序问题

sql-server - 如何在SSRS上按参数对表进行排序

ssrs-2008 - SSRS 2008R2下引用System.Core(4.0)时报告部署错误如何解决

sql - 缩短查询

reporting-services - SPC 图表上的带状线