我的客户希望能够根据参数(ReportType)显示/隐藏报表中的列。报告列是静态的,它们只是控制隐藏/显示哪些列,从而创建不同的“视图”。目前只有2个视图,但我们还要添加几个视图。
目前,列可见性由简单表达式控制:=参数!ReportType.Value =“SOMEVALUE”
并且只有1个报告类型隐藏了列,因此这个表达式很好。
现在我们正在进入一种情况,其中列可能隐藏在多个ReportTypes中,我想避免进入:IF报告类型= VAL1或VAL2或VAL3然后隐藏,因为它将使任何人很难看到给定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
然后在“列可见性”表达式中检查数据集中是否存在列名。这样,报表类型的可见列在单个位置定义,易于管理/维护。
在我链接的帖子中,他让用户在参数中选择列名。我想根据所选的ReportType参数在我的数据集中查找名称。
我坚持将列名称放入参数中,然后在列可见性表达式中使用它。任何帮助都会被贬低:)
答案 0 :(得分:0)
Doh,我几乎就在那里。
我创建了一个参数并将其默认值设置为" Get From Query"并选择了我的数据集和ColumnName字段......完成工作!
然后我只是使用我正在关注的文章中的代码为每列编写可见性表达式。