【问题标题】:List report, filter by letter列出报告,按字母过滤
【发布时间】:2019-06-23 22:18:00
【问题描述】:
我正在构建一个摘要报告,查看在数据库中标记为具有共同特征的用户,即返回过去 5 年内合同包含结束日期的所有用户。
这会生成一个图形,例如[250]
我在该图上进行钻取以提供姓名、名字和姓氏的列表报告。
我已经订购了列表 A-Z
我想在报告顶部添加一行 26 个字母,并让每个字母只返回具有相应起始字母的名称。
这是否需要进一步钻取,或者是否可以根据用户驱动的选择刷新现有列表?
【问题讨论】:
标签:
reporting-services
filtering
ssrs-grouping
【解决方案1】:
只需在您的报告中添加一个自定义参数即可。右键单击参数并添加参数。
(等等...)。那么默认值应该是All。
然后只需将以下过滤器添加到您的 tablix:
'Expression:
=Switch(Parameters!YourParameterName.Value = "All", True, Parameters!YourParameterName = Left(Fields!YourNameField.Value, 1), True)
【解决方案2】:
如果您只是直接使用 SSRS,那么您无法在不重新运行报表的情况下刷新报表内容,因此您要么
- 重新组织您当前的报告。
- 需要另一个钻取报告。
根据您的布局,您可以按第一个字母对数据进行分组,然后使用可折叠的行组来显示/隐藏该组名称。为此,只需添加一个父行组,将值、组值和排序值全部设置为=LEFT(Fields!myNameField.Value)。接下来将details 行组的可见性设置为隐藏,并将切换可见性属性设置为指向包含您刚刚创建的父组中的字母的单元格。
如果您有太多数据无法提高效率,您可能不得不沿着额外的子报告路线走下去。
为了让生活更轻松一些,并让您不必创建 26 个链接和参数值,我会执行以下操作...
- 创建一个存储字母列表的表
- 向您的报表添加一个矩阵,该矩阵有一个按此表中的字母值分组的列组。这将充当您的“过滤栏”
- 将矩阵单元格上的操作设置为“转到报告”,指向最终钻取报告并将
[myLetterColumn] 值作为参数传递。
假设此子报告将被隐藏并且仅从父报告中调用,则无需设置可用参数。