0

我的客户希望能够根据参数 (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 参数在我的数据集中查找名称。

我坚持将列名放入参数中,然后在列可见性表达式中使用它。任何帮助都会非常感激:)

4

1 回答 1

0

多哈,我几乎在那里。

我创建了一个参数并将其默认值设置为“从查询中获取”并选择了我的数据集和 ColumnName 字段...完成了!

然后我只是使用我正在关注的文章中的代码为每一列编写可见性表达式。

于 2012-10-12T16:43:09.677 回答