【发布时间】:2021-02-16 07:59:04
【问题描述】:
【问题讨论】:
标签: c# visual-studio winforms rdlc
【问题讨论】:
标签: c# visual-studio winforms rdlc
希望以下内容可以帮助您找到所需的内容。首先,您需要三个报告和两个数据表(或构建报告时必须的其他列表)。
首先,在我描述的 3 份报告中,我不会担心报告的最终格式会完全对齐、粗体、间距……让它发挥作用,然后你就可以让它变得漂亮,毕竟它是功能性的。
接下来,创建一个伪造的数据表“MyTable”,其唯一目的是创建两条记录。即使“MyGroup”的单列并将其作为 int (仅用于示例目的)。
现在,创建两条记录并将每行中的值分别设置为 1 和 2,以便您的表具有
MyGroup
1
2
现在,对于其他两个报告。我的理解是,您希望第一份报告显示每个部门总计的汇总和总计。第二份报告显示每个部门的所有活动的详细信息。所以这基本上是使用从任何查询返回的相同数据集。对于此示例,我将数据表称为“SalesData”。
创建报告
创建您的第一个报表,在报表上放置一个表格控件,您当前报表的全宽为横向或纵向,只要两者大小相同,您希望此报表相同。例如:所有将是肖像。添加您的报表数据源以显示“MyTable”并将其分配给表格控件。还将“SalesData”表添加到报告中,以便将来的子报告使用。
在表格控件上,在显示“行组”的下方,为“我的组”列添加“分组依据”。这样我们就可以在每个组之间强制分页。添加后,右键单击父组“MyGroup”并选择“Group Properties”。这将在左侧显示一个选项以允许您设置分页符,单击“在组的每个实例之间”的复选框。现在,只需将表格控件中的一列作为“MyGroup”列。保存报告前:“MySalesRpt.rdlc”。然后编译并运行报告。你应该得到这个有 2 页的简单报告,每页分别只显示数字 1 和 2。注意:您还需要将辅助报告的数据表引用也添加到此主报告中,以便它们可以作为第一个报告的子报告使用。
创建一个新报告,例如:“MySalesDetail.rdlc”,将“SalesData”添加到其中。将表控件添加到报表并将其源设置为“SalesData”表。包括您想要显示销售活动的详细信息列的任何内容。根据部门添加一个数据组,得到你的总和(salesDollarColumn)。在组页脚之外/下方添加一个新行,以便您可以将报表总计作为所有前的总和:SalesDollarColumn。您可以自行测试和运行此报告,直到它看起来正确为止。
现在,您的第三份报告。复制/粘贴 MySalesDetail.rdlc 报告并将其更改为 MySalesSummary.rdlc。因此,您不会在此摘要报告中显示构建每个部门的总和()的每一行,右键单击代表组详细信息的行并删除。它会询问您是否要删除行和关联的组?回复是,因为它只会删除详细信息行,但保留组页脚,它将保留每个部门的 sum() 总数。保存、测试/运行此报告。
一旦所有 3 个报告单独工作,现在我们可以返回“MySalesRpt”。在这个原本简单的 1 详细信息报告中添加额外的 DETAIL 行。右键单击现有的详细信息行,然后选择“插入行”->“内部组-下方”。现在将显示为两行。
现在,在只有一个简单文本框的报表的第一行中,转到报表工具箱并选择子报表并将一个实例放入每一行。 在第一行,子报表,右键单击并设置属性。将“名称”和“将此报表用作子报表”设置为摘要报表“MySalesSummary”。在第二行子报表中,执行相同操作,但使用“MySalesDetail”。
最后一步。单击代表“MySalesSummary”的子报表。转到该属性并向下滚动到“隐藏”属性。您希望将此值设置为表达式:例如:“=Fields!MyGroup.Value = 2”。这样,只有在 MyGroup = 1 的第一条记录上才会生成报告。
类似地,在表示详细信息的第二个子报表上,将隐藏设置为相反的值。“=Fields!MyGroup.Value = 1”。当 MyGroup = 1 时隐藏。这样您可以在自己的页面上显示每个报告,但每个组只会显示一个。
我知道这听起来很深,但慢慢来,它应该适合你。我已经做过并确认这个过程有效。抱歉有这么多步骤,但它必须分成多个部分才能按照您的要求将它们全部联系在一起。
【讨论】:
一个 rdlc 在主要本地报告中,另一个在子报告中。然后在主本地报表中设置 InteractiveSize 以将其拆分为在报表查看器的不同页面中显示每个。
【讨论】: