报告服务基于动态查询显示/隐藏列

时间:2014-01-14 15:22:58

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

我有一些专栏和报告服务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'包含Field'ColumnC'的定义。   从数据源

返回的结果集中缺少此字段

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

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

1 个答案:

答案 0 :(得分:0)

  

我建议你在SSRS层中执行此操作,而不是在其中执行此操作   您的查询。在SSRS中做的很简单。

     

1)创建Boolean Type标签的报告参数   Display Column Name

     

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

= Not Parameters!DisplayParam.Value

  

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

     

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