我的客户希望能够根据参数 (ReportType) 在报告中显示/隐藏列。报告列是静态的,它们只会控制隐藏/显示哪些列,从而创建不同的“视图”。目前只有 2 个视图,但我们即将添加更多视图。
目前,列的可见性由简单的表达式控制:=Parameters!ReportType.Value = "SOMEVALUE"
并且只有 1 种报告类型隐藏列,所以这个表达式很好。
现在我们正在进入一个列可能隐藏在多个 ReportTypes 中的情况,我想避免进入: IF report type = VAL1 or VAL2 or 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 参数在我的数据集中查找名称。
我坚持将列名放入参数中,然后在列可见性表达式中使用它。任何帮助都会非常感激:)