我有一个未经过滤的数据集来处理,以生成报告(SQL Server 2005顺便说一句)。
假设我有一个 Name 列,我想在报告中添加一个参数,以便只选择包含某些字符的名称。
有人知道如何处理这些过滤器吗?
我试过没有运气这些:
=Fields!Name.Value Like =Parameters!FilterName.Value
=Fields!Name.Value = = "%" + Parameters!FilterName.Value + "%"
如果我给出参数'oo',我希望能够得到名字'foo'和'foobar'
编辑: 我知道过滤应该在SQL服务器端完成,但我不控制我给出的数据集(webservice给它一个无参数方法),所以我必须在报告方面进行过滤。
答案 0 :(得分:17)
我回答我自己的问题,过滤表达式实际上是:
=Fields!Name.Value Like ="*"+ Parameters!FilterName.Value + "*"
即。事实上,使用"*"
代替"%"
。
答案 1 :(得分:3)
首选做法是精确匹配。
您可以从查询返回的数据集或替代查询中构建多值参数列表,从而确保可以实现完全匹配。
以下参考资料可能有用。
答案 2 :(得分:2)
我建议您将过滤器应用为执行的SQL语句的一部分,以恢复DataSet,而不是尝试在Reporting Services报表中应用过滤器。我认为SQL Engine更适合处理这些类型的过滤器/查询。
答案 3 :(得分:1)
你的回答让我走上正轨:)! 也许它与SQL Server 2005不同;但以下解决方案对我有用:
=Fields!AppName.Value Like ="*" & Parameters!FilterApplication.Value & "*"
答案 4 :(得分:0)
转到数据集的属性,转到过滤器选项卡。在表达式下拉列表中,单击要按(名称)过滤的字段。单击运算符并选择。在值框中单击表达式选择。将打开一个新窗口。转到参数列表并将参数添加到等式中。点击确定。