【问题标题】:How to group multiple detail grids in reporting services如何在报告服务中对多个详细信息网格进行分组
【发布时间】:2017-06-30 14:43:55
【问题描述】:

我有一个设定要求来生成一个看起来像这样的报告(详细信息网格基于 Hearing 表 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 并将其分组,因为有多个详细信息网格。如果我只有一个细节网格,那当然很简单,但我还没有看到一种方法可以处理两个细节级别。

显然,如果您嵌套两个表/tablix,SSRS 会将您限制为一个数据集,因此不适用,而且跨列的灵活性有限。我不确定是否可以使用 List (我没有经验)或使用 LookupSet 函数来完成此操作。我不想在我的设计或选择损害性能的路线上走错路,因为此报告的参数允许听取开始和结束日期的日期范围,因此这可能会产生许多记录。

一些想法将不胜感激!

【问题讨论】:

  • 我认为你最好的选择是使用一个列表,它本质上是一个容器,在你的案例中通过听到重复。您必须使用一个数据集,但您可以使用多个 tablix。
  • 您是否有一个很好的示例/链接来说明如何按给定字段进行分组并进行设置?我是否真的只是编写查询以包含所有字段,将其保存为数据集,然后将三个 tablix 拖放到列表中并根据需要绑定单元格,它会自动为您分组所有内容?
  • 见下面的答案

标签: reporting-services ssrs-2012


【解决方案1】:

这是一个博客链接,其中包含如何使用列表的相当不错的示例。正如你所看到的,这个人在列表中有很多事情要做,所以我认为你应该能够完成你需要的事情。要回答您的问题,是的,本质上就是这么简单。一个包含所有相关/可分组字段的数据集。创建一个按听力分组的列表,然后根据需要放入您的 tablix(es)。

http://www.bidn.com/blogs/timmurphy/ssas/683/using-a-list-object-in-ssrs

【讨论】:

  • 好的,这种方法奏效了。我认为我的带有两个细节网格的场景只是一个困难的用例。由于它需要一个数据集,并且参与者和违规行为都具有重复的详细信息行,因此使用 Previous 函数我可以消除一个网格中的重复,但不能消除另一个网格中的重复。如果我试图消除 Violations 网格中的重复,那么我会在 Participants 网格中得到重复的数据集,反之亦然。由于数据不会一个接一个地重复,Previous fcn 不会删除它。并且使用 Hide Duplicates 属性会导致空白行,我无法删除
【解决方案2】:

设置

只是为了设置一个示例,让我们从以下数据开始(您可以在 SSRS 中将其作为 DataSet 输入)

;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 然后列出每个部门的所有团队,但在两个不同的块中。因此,循环遍历所有团队并显示胜利,然后遍历每个分区中的所有团队并显示失败 - 像这样:

解决方案

  1. 添加一个List 控件

    注意:默认情况下,列表视图应该只有一个单元格,并且该单元格中应该有一个Rectangle。单元格的直接子级占据整个单元格大小,因此拥有一个矩形可以让您在其中布局内容

  2. 添加数据集并将其应用于列表

    添加列表或右键选择属性>常规>数据集时可能会提示您

  3. grouping paneRow Groups 下,右键单击Details 并选择Group Properties

    注意不要 在此处添加新组;相反,我们将分组表达式添加到现有的详细信息部分

  4. 添加组表达式并在数据集中选择要分组的字段

  5. 将表格添加到列表的单元格/矩形区域。

    数据集应该是预先选择的并且是只读的,因为我们位于详细信息部分中:

  6. 添加您喜欢的任何其他列或控件

进一步阅读

【讨论】:

  • 感谢您的跟进 - 看起来是一个不错的解决方案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多