【发布时间】:2012-10-13 00:43:09
【问题描述】:
我的客户希望能够根据参数 (ReportType) 在报告中显示/隐藏列。报告列是静态的,它们只会控制隐藏/显示哪些列,从而创建不同的“视图”。目前只有 2 个视图,但我们即将添加更多视图。
目前列的可见性由简单的表达式控制:=Parameters!ReportType.Value = "SOMEVALUE"
并且只有 1 种报告类型隐藏了列,所以这个表达式很好。
现在我们正在进入一个列可能隐藏在多个 ReportTypes 中的情况,我想避免进入:IF 报告类型 = VAL1 或 VAL2 或 VAL3 THEN HIDE,因为这将很难看到任何给定 ReportType 应该显示哪些列(因为所有逻辑都在每个列可见性表达式中)
我找到了一个帖子并使用了它的基本元素: http://sql-bi-dev.blogspot.co.uk/2010/10/displaying-dynamic-columns-in-ssrs.html
我想做的是定义一个数据集,比如:
SELECT * FROM
(
select 'Rpt Type1' ReportType, 'Units' ColumnName UNION
select 'Rpt Type1' ReportType, 'Price' ColumnName UNION
select 'Rpt Type2' ReportType, 'Units' ColumnName
) ReportColumns
WHERE ReportType = @ReportType
然后在 Column Visibility 表达式中检查数据集中是否存在列名。这样,报表类型的可见列在一个地方定义,易于管理/维护。
在我链接的帖子中,他让用户在参数中选择列名。我想根据所选的 ReportType 参数在我的数据集中查找名称。
我坚持将列名放入参数中,然后在列可见性表达式中使用它。任何帮助都会非常感激:)
【问题讨论】:
标签: reporting-services ssrs-2008