在SQL Reporting Services中,如何根据参数过滤数据集?

时间:2009-05-15 15:12:15

标签: sql-server reporting-services reporting

我有一个未经过滤的数据集来处理,以生成报告(SQL Server 2005顺便说一句)

假设我有一个 Name 列,我想在报告中添加一个参数,以便只选择包含某些字符的名称。

有人知道如何处理这些过滤器吗?

我试过没有运气这些:

=Fields!Name.Value Like =Parameters!FilterName.Value

=Fields!Name.Value = = "%" + Parameters!FilterName.Value + "%"

如果我给出参数'oo',我希望能够得到名字'foo'和'foobar'

编辑: 我知道过滤应该在SQL服务器端完成,但我不控制我给出的数据集(webservice给它一个无参数方法),所以我必须在报告方面进行过滤。

5 个答案:

答案 0 :(得分:17)

我回答我自己的问题,过滤表达式实际上是:

=Fields!Name.Value Like ="*"+ Parameters!FilterName.Value + "*"

即。事实上,使用"*"代替"%"

答案 1 :(得分:3)

首选做法是精确匹配。

您可以从查询返回的数据集或替代查询中构建多值参数列表,从而确保可以实现完全匹配。

以下参考资料可能有用。

http://msdn.microsoft.com/en-us/library/ms155917.aspx

答案 2 :(得分:2)

我建议您将过滤器应用为执行的SQL语句的一部分,以恢复DataSet,而不是尝试在Reporting Services报表中应用过滤器。我认为SQL Engine更适合处理这些类型的过滤器/查询。

答案 3 :(得分:1)

你的回答让我走上正轨:)! 也许它与SQL Server 2005不同;但以下解决方案对我有用:

=Fields!AppName.Value    Like    ="*" & Parameters!FilterApplication.Value & "*"

答案 4 :(得分:0)

转到数据集的属性,转到过滤器选项卡。在表达式下拉列表中,单击要按(名称)过滤的字段。单击运算符并选择。在值框中单击表达式选择。将打开一个新窗口。转到参数列表并将参数添加到等式中。点击确定。