是否有任何选项可以在 SSRS 报告中的列名称上提供下拉菜单。
例如,我们在 SSRS 报告中有 ENO、ENAME、PHONE、EMAILID、CITY 列,因此默认情况下,当我们打开 SSRS 报告时,我们应该只看到 ENO、ENAME、CITY 这些列,其他列应隐藏。但当需要时,我们还需要填充其他 2 列。
那么有没有办法在 SSRS 报告中自动隐藏列并在需要时报告。
您可以通过根据参数值隐藏列来做到这一点,但这很混乱,因为列应该在的位置会留下空白。这可能适合您的场景,但更灵活的方法是重新组织数据集查询中的数据。
在这里,我将一些示例数据放在一起
-- this is just to setup some data and will not be required in your report dataset query
declare @t table ( ENO int, ENAME varchar(20), PHONE varchar(20), EMAILID varchar(35), CITY varchar(20))
insert into @t values
(1, 'Dave', '12345-6789', '[email protected]', 'London'),
(2, 'Bob' , '23456-7890', '[email protected]', 'Paris'),
(3, 'Mary', '34567-8901', '[email protected]', 'New York'),
(4, 'Jane', '45678-9012', '[email protected]', 'Milan'),
(5, 'John', '56789-0123', '[email protected]', 'Munich'),
(6, 'Alex', '67890-1234', '[email protected]', 'Madrid')
-- The following is required inthe dataset query swapping out "@t" for you real table name
SELECT * FROM
(
SELECT ENO, 'ENAME' as Property, 1 as ColSort, ENAME as PropValue FROM @t
UNION ALL SELECT ENO, 'PHONE' as Property, 4 as ColSort, PHONE as PropValue FROM @t
UNION ALL SELECT ENO, 'EMAILID' as Property, 3 as ColSort, EMAILID as PropValue FROM @t
UNION ALL SELECT ENO, 'CITY' as Property, 2 as ColSort, CITY as PropValue FROM @t
) u
WHERE Property IN (@properties)
在我的示例中,上述代码全部位于数据集查询中,但您只需要最后一部分,将对
@t
的引用更改为您的真实表。
我们正在做的是将每一列变成一行,并添加一个 ColSort 列,以便您可以控制列在报告中显示的顺序。您可以使用
UNPIVOT
但这依赖于相同的列数据类型,并且使得添加列排序顺序变得更加困难。
暂时忽略
WHERE
子句,这会给我们以下输出
因此,创建一个新报告并添加产生上述结果的数据集,但请确保按照代码示例添加
WHERE
子句。
这会自动将名为
properties
的参数添加到您的报告中。
编辑参数并选择“允许多个值”。
将可用值设置为名称或列,例如,如果您愿意,可以使用不同的标签。
现在设置默认值(ENO 始终存在,因此无需添加)
接下来,将矩阵控件添加到您的报表中。将 ENO 字段拖至行占位符,将 Property 字段拖至列占位符,将 PropValue 拖至数据占位符。
现在双击“属性”列组并将排序方式更改为“ColSort”
就是这样...
首次运行报告时,我们得到这个..
然后,我们可以在列选择参数中更改我们喜欢的任何内容,然后再次单击“查看报告”。