【问题标题】:In SQL Reporting Services, how to filter a dataset according to a parameter?在 SQL Reporting Services 中,如何根据参数过滤数据集?
【发布时间】:2009-05-15 15:12:14
【问题描述】:

我有一个未经过滤的数据集要处理以生成报告(SQL Server 2005 btw)

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

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

我试过这些都没有运气:

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

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

如果我提供参数“oo”,我希望能够获得名称“foo”和“foobar”

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

【问题讨论】:

标签: sql-server reporting-services reporting


【解决方案1】:

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

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

即事实上,使用"*" 而不是"%"

【讨论】:

    【解决方案2】:

    首选做法是使用完全匹配。

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

    以下参考资料可能很有用。

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

    【讨论】:

    • 谢谢,这个链接把我带到了报告过滤器示例页面,到目前为止我已经超过了这个页面,这让我找到了正确的答案。
    【解决方案3】:

    我建议您将过滤器应用为 SQL 语句的一部分,该语句执行以恢复数据集,而不是尝试在 Reporting Services 报表中应用过滤器。我认为 SQL 引擎在处理这些类型的过滤器/查询方面更加优化。

    【讨论】:

    • 我知道,我希望我能尽快过滤,但是,web 服务不是我的,它的所有者不关心肥皂膨胀,并且想要我来过滤数据。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多