首页 > 解决方案 > 如何创建具有不同详细信息的数据组?

问题描述

我正在尝试为与项目相关的合同创建详细报告。我希望报告包括与项目、合同项目相关的所有合同,然后是每个合同项目的发票和变更单详细信息。我知道我可以使用组来创建此报告的合同和合同项目部分,但我不知道如何(或者即使可能)将发票和更改订单详细信息与合同项目相关联。所附图像是我希望这份报告看起来像的模型。有人可以建议这是否可能,如果可以,我将如何使用 SSRS 实现它?

合同图像

标签: reporting-services

解决方案


有几种方法可以解决这个问题,但我的直觉是结合使用子报告和组。这实际上取决于您的数据是什么样的。

只是继续你发布的样本....

我将创建一个子报告,将单个合同项目作为一个或多个参数。例如,如果每个合同项目都有一个唯一的 ID,您可以将其传递给子报告,如果合同项目在合同中是唯一的,那么您将同时传递合同编号和合同项目编号。然后我会创建一个主报告来调用每个项目的子报告。

所以,

创建子报告

  1. 创建一个仅显示单个合同项目数据的报告(我们称之为“contractItem”)。
  2. 根据需要添加参数,足以使报告独一无二 - 请参阅之前的评论。
  3. 添加数据集以获取报告各部分的数据(项目详细信息、发票详细信息、变更单详细信息)。确保数据集查询将数据过滤到特定的合同项,例如SELECT * FROM myTable WHERE ContractItemID = @pContractItemIDpContractItemID报告参数的名称在哪里。
  4. 添加表格以显示数据集的内容
  5. 测试报告并确保它符合您的预期
  6. 不要放入任何页眉/页脚,并删除报告内容周围的任何不必要的空白。
  7. 保存报告

接下来创建主报告

  1. 创建一个新报告。
  2. 添加一个dsLoop包含所有合同编号和合同项目编号的数据集(例如)。例如SELECT DISTINCT ContractNumber, ContractItemID FROM myTable ORDER BY ContractNumber, ContractItemID ,这会给我们类似的东西
合同号码 合同部分 ID
123 1
123 2
456 1
  1. 现在添加一个表并将其绑定到数据集(设置 tablix 的数据集属性)
  2. 删除除一行之外的所有单元格,并使剩余的单元格更宽,以便更容易使用。
  3. 右键单击单元格并插入 -> 子报表
  4. 将子报表设置为我们之前创建的报表 ( contractItem)
  5. dsLoop在属性选项卡中,将子报表的属性设置为之前创建的数据集中的字段值。
  6. 添加在 ContractNumber 上分组的父行组(在提示时包括标题)。您可以将合同编号等添加到此行组,如果需要合并单元格。

运行报表时,它将为数据集中的每个条目生成一行dsLoop。每行将包含一个子报告,每个子报告都将具有从相应记录传递的参数dsLoop

希望其中一些有意义......如果没有,请查看我多年来的其他一些答案,可能会有一些类似的解决方案。


推荐阅读