reporting-services - 如何创建具有不同详细信息的数据组?
问题描述
我正在尝试为与项目相关的合同创建详细报告。我希望报告包括与项目、合同项目相关的所有合同,然后是每个合同项目的发票和变更单详细信息。我知道我可以使用组来创建此报告的合同和合同项目部分,但我不知道如何(或者即使可能)将发票和更改订单详细信息与合同项目相关联。所附图像是我希望这份报告看起来像的模型。有人可以建议这是否可能,如果可以,我将如何使用 SSRS 实现它?
解决方案
有几种方法可以解决这个问题,但我的直觉是结合使用子报告和组。这实际上取决于您的数据是什么样的。
只是继续你发布的样本....
我将创建一个子报告,将单个合同项目作为一个或多个参数。例如,如果每个合同项目都有一个唯一的 ID,您可以将其传递给子报告,如果合同项目在合同中是唯一的,那么您将同时传递合同编号和合同项目编号。然后我会创建一个主报告来调用每个项目的子报告。
所以,
创建子报告
- 创建一个仅显示单个合同项目数据的报告(我们称之为“contractItem”)。
- 根据需要添加参数,足以使报告独一无二 - 请参阅之前的评论。
- 添加数据集以获取报告各部分的数据(项目详细信息、发票详细信息、变更单详细信息)。确保数据集查询将数据过滤到特定的合同项,例如
SELECT * FROM myTable WHERE ContractItemID = @pContractItemID
。pContractItemID
报告参数的名称在哪里。 - 添加表格以显示数据集的内容
- 测试报告并确保它符合您的预期
- 不要放入任何页眉/页脚,并删除报告内容周围的任何不必要的空白。
- 保存报告
接下来创建主报告
- 创建一个新报告。
- 添加一个
dsLoop
包含所有合同编号和合同项目编号的数据集(例如)。例如SELECT DISTINCT ContractNumber, ContractItemID FROM myTable ORDER BY ContractNumber, ContractItemID
,这会给我们类似的东西
合同号码 | 合同部分 ID |
---|---|
123 | 1 |
123 | 2 |
456 | 1 |
- 现在添加一个表并将其绑定到数据集(设置 tablix 的数据集属性)
- 删除除一行之外的所有单元格,并使剩余的单元格更宽,以便更容易使用。
- 右键单击单元格并插入 -> 子报表
- 将子报表设置为我们之前创建的报表 (
contractItem
) dsLoop
在属性选项卡中,将子报表的属性设置为之前创建的数据集中的字段值。- 添加在 ContractNumber 上分组的父行组(在提示时包括标题)。您可以将合同编号等添加到此行组,如果需要合并单元格。
运行报表时,它将为数据集中的每个条目生成一行dsLoop
。每行将包含一个子报告,每个子报告都将具有从相应记录传递的参数dsLoop
希望其中一些有意义......如果没有,请查看我多年来的其他一些答案,可能会有一些类似的解决方案。
推荐阅读
- java - 具有多个 id 的共享元素转换
- excel - 将单元格的文本存储在字符串变量 VBA 中
- javascript - 如何在 React 和 Typescript 中使用 useRef 钩子和 getClientBoundingRect?
- javascript - 我如何修复我的代码以将每个段落放在一个新行中,因为我试图在给定段落之前添加段落
- php - 需要具有不同主题相同数据库的重复 Drupal 7 站点,有什么建议吗?
- javascript - 在没有 Webpack/Bundlers 的 PHP 中镜像 Vue 组件
- php - PHP调试mysqli连接,mysqli实例不能正常工作?
- python - 在一个非常大的数据集中找到一个不同长度的数组中的先前值,以提高内存效率,而它目前无法完成
- powershell - Skip Drive during Powershell Iteration
- sql - 如何根据列的累积总和创建不相等的十分位数/四分位数