【问题标题】:reporting services show/hide column base on dynamic query报告服务根据动态查询显示/隐藏列
【发布时间】:2014-01-14 15:22:57
【问题描述】:

我有几个专栏和一个报表服务 Tablix:

ColumnA | ColumnB | ColumnC
  Val1  |   Val2  |   Val3

我正在使用动态查询来选择数据:

@columnList nvarchar(300)
DECLARE @sqlCommand nvarchar(max)
SET @sqlCommand = N'SELECT '+ @columnList +' FROM db.Table'
EXECUTE sp_executesql @sqlCommand

我将要选择的列传递给程序...如果指定了所有列,则报告可以正常工作:

SET @sqlCommand = 'ColumnA,ColumnB,ColumnC'

但是,当我为报告服务中的 tablix 中的列指定较少的列时:

SET @sqlCommand = 'ColumnA,ColumnB'

我得到错误:

数据集“Dataset1”包含字段“ColumnC”的定义。 数据源返回的结果集中缺少该字段

我知道如果我隐藏 ColumnC 就不会出现这个错误,但是在网上搜索了几天后我没有找到解决方案。最后,我有以下问题:

如何隐藏不在 sql SELECT 中但在 Reporting Services Tablix 中的列?

【问题讨论】:

    标签: sql sql-server reporting-services ssrs-2008


    【解决方案1】:

    我建议您在 SSRS 层中执行此操作,而不是在 您的查询。在 SSRS 中进行操作非常简单。

    1) 创建Boolean Type 的报告参数,将其标记为 Display Column Name.

    2) 在设计视图中右键单击要隐藏或显示的列 goto "Column Visibility Tab" 然后选择“显示或隐藏基于 表达式”。在你的表达式中`

    = Not Parameters!DisplayParam.Value

    现在在运行时,您的用户可以选择显示或隐藏该列 它。

    如果您希望在没有任何输入的情况下显示或隐藏列 最终用户,您可以选择相同的路径,但在“基于显示或隐藏 在表达式上”使用您要显示它的条件或 隐藏它。

    【讨论】:

    • 您的回答是合理的...但是我需要在 sql 中管理 columnList,因为用户可以根据他希望在报告中看到的列生成五个不同的报告...此时已经有了为这个报告配置了很多选项......
    • 这就是我进行此类操作的方式。另外,如果您不希望用户传递值以显示或隐藏列。在表达式的运行时隐藏参数并将值传递给参数。
    • 谢谢@M.Ali...我找到了一个替代方案,它的功能是更少... =Fields!MyField.IsMissing...如果可以帮助某人blog.hoegaerden.be/2012/03/20/…,此链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多