如何在报告服务中对多个详细信息网格进行分组
How to group multiple detail grids in reporting services
我有一个设定要求来生成如下所示的报告(详细信息网格基于 Hearing table ID 或 HearingDate 和 CaseId 并按其分组):
Hearing Group (repeat for each hearing)
┌───────────────────────────────────────────────────────────────────┐
│ Hearing Date: [HearingDate] Case ID: [CaseId] etc... │
│ │
│ | Start Time | Hearing Type | etc | │
│ | [StartTime] | [HearingType] | [etc] | │
│ │
│ Participant List: │
│ │
│ | Role | Participant Name | Participant End Date | │
│ | [Role] | [ParticipantName] | [ParticipantEndDate] | │
│ │
│ | Violation Description | Plea Description | Person Charged | │
│ | [Violation Description] | [PleaDescription] | [PersonCharged] | │
└───────────────────────────────────────────────────────────────────┘
我对此进行了相当多的研究,但我认为我无法使用一个数据集和一个 tablix 并以这种方式对其进行分组,因为有多个详细信息网格。如果我只有一个细节网格,当然,那很容易,但我还没有找到一种方法来处理两个层次的细节。
显然,如果您嵌套两个 tables/tablixes,SSRS 会将您限制在一个数据集内,所以这是不可能的,而且跨列的灵活性有限。我不确定我是否可以使用列表(我没有经验)或使用 LookupSet 函数来完成此操作。我不想因为我的设计或选择损害性能的路线而走上错误的道路,因为此报告的参数允许听证会开始日期和结束日期的日期范围,因此这可能会生成许多记录。
一些想法将不胜感激!
这是一个 link 博客,其中有一个关于如何使用列表的相当不错的示例。如您所见,此人在列表中有很多事情要做,所以我认为您应该能够完成您需要的事情。要回答您的问题,是的,本质上就是这么简单。一个包含所有 relevant/group-able 字段的数据集。创建一个按听力分组的列表,然后根据需要放入您的 tablix。
http://www.bidn.com/blogs/timmurphy/ssas/683/using-a-list-object-in-ssrs
设置
只是为了设置一个示例,让我们从以下数据开始(您可以在 SSRS 中将其作为数据集输入)
;WITH Games (Division, Team, Wins, Loses) AS (
SELECT 'North', 'Puffins', 2, 10 UNION
SELECT 'North', 'Robbins', 6, 5 UNION
SELECT 'South', 'Parrots', 9, 3
)
SELECT * FROM Games
我们想分组 Division
然后列出每个分区中的所有团队,但在两个不同的块中。所以循环一次并显示胜利,然后 然后 循环每个分区的所有团队并显示损失 - 像这样:
解决方案
添加一个List
控件
注意:默认情况下,列表视图应该只有一个单元格,并且该单元格中应该有一个 Rectangle
。单元格的直接子元素占据整个单元格大小,因此拥有一个矩形允许您在其中布局内容
添加数据集并将其应用于列表
添加列表或右击 select properties > general > dataset
时可能会提示
在 grouping pane 中,在 Row Groups
下,右键单击 Details
和 select Group Properties
.
注意:不要添加 这里有一个新群;相反,我们向现有详细信息部分添加分组表达式
添加分组表达式和select数据集中要分组的字段
将表格添加到列表的单元格/矩形区域。
数据集应该是预selected 和只读的,因为我们在详细信息部分中:
添加您想要的任何其他列或控件
进一步阅读
- Multi-detail reports using sub reports in SQL Server Reporting Services
- Previous version 的答案使用了子报告,但当前的方法更清晰、更快速
我有一个设定要求来生成如下所示的报告(详细信息网格基于 Hearing table ID 或 HearingDate 和 CaseId 并按其分组):
Hearing Group (repeat for each hearing)
┌───────────────────────────────────────────────────────────────────┐
│ Hearing Date: [HearingDate] Case ID: [CaseId] etc... │
│ │
│ | Start Time | Hearing Type | etc | │
│ | [StartTime] | [HearingType] | [etc] | │
│ │
│ Participant List: │
│ │
│ | Role | Participant Name | Participant End Date | │
│ | [Role] | [ParticipantName] | [ParticipantEndDate] | │
│ │
│ | Violation Description | Plea Description | Person Charged | │
│ | [Violation Description] | [PleaDescription] | [PersonCharged] | │
└───────────────────────────────────────────────────────────────────┘
我对此进行了相当多的研究,但我认为我无法使用一个数据集和一个 tablix 并以这种方式对其进行分组,因为有多个详细信息网格。如果我只有一个细节网格,当然,那很容易,但我还没有找到一种方法来处理两个层次的细节。
显然,如果您嵌套两个 tables/tablixes,SSRS 会将您限制在一个数据集内,所以这是不可能的,而且跨列的灵活性有限。我不确定我是否可以使用列表(我没有经验)或使用 LookupSet 函数来完成此操作。我不想因为我的设计或选择损害性能的路线而走上错误的道路,因为此报告的参数允许听证会开始日期和结束日期的日期范围,因此这可能会生成许多记录。
一些想法将不胜感激!
这是一个 link 博客,其中有一个关于如何使用列表的相当不错的示例。如您所见,此人在列表中有很多事情要做,所以我认为您应该能够完成您需要的事情。要回答您的问题,是的,本质上就是这么简单。一个包含所有 relevant/group-able 字段的数据集。创建一个按听力分组的列表,然后根据需要放入您的 tablix。
http://www.bidn.com/blogs/timmurphy/ssas/683/using-a-list-object-in-ssrs
设置
只是为了设置一个示例,让我们从以下数据开始(您可以在 SSRS 中将其作为数据集输入)
;WITH Games (Division, Team, Wins, Loses) AS (
SELECT 'North', 'Puffins', 2, 10 UNION
SELECT 'North', 'Robbins', 6, 5 UNION
SELECT 'South', 'Parrots', 9, 3
)
SELECT * FROM Games
我们想分组 Division
然后列出每个分区中的所有团队,但在两个不同的块中。所以循环一次并显示胜利,然后 然后 循环每个分区的所有团队并显示损失 - 像这样:
解决方案
添加一个
List
控件注意:默认情况下,列表视图应该只有一个单元格,并且该单元格中应该有一个
Rectangle
。单元格的直接子元素占据整个单元格大小,因此拥有一个矩形允许您在其中布局内容添加数据集并将其应用于列表
添加列表或右击 select properties > general > dataset
时可能会提示
在 grouping pane 中,在
Row Groups
下,右键单击Details
和 selectGroup Properties
.注意:不要添加 这里有一个新群;相反,我们向现有详细信息部分添加分组表达式
添加分组表达式和select数据集中要分组的字段
将表格添加到列表的单元格/矩形区域。
数据集应该是预selected 和只读的,因为我们在详细信息部分中:
添加您想要的任何其他列或控件
进一步阅读
- Multi-detail reports using sub reports in SQL Server Reporting Services
- Previous version 的答案使用了子报告,但当前的方法更清晰、更快速