Page tree
Skip to end of metadata
Go to start of metadata

业务数据中经常有主从表结构的数据,典型是订单头与订单行。为了实现订单批量打印,就需要设计一种主从结构的表格式报表。如下图:

其中:表格之外的部分是订单头信息,包括订单编号、客户信息等;表格部分是订单行信息。

原始的订单头数据和订单行数据如下图:

设计这种主从结构报表的基本思路:

(1)表格1,绑定订单头数据集。

(2)表格2,绑定订单行数据集。

(3)表格1中删除表头和表尾,添加多个明细行。最末明细行合并为一个单一单元格。

(4)表格2嵌套在表格1末行那个合并单元格中。

(5)表格2设置关联条件,即子表与主表之间的字段关联关系。


详细的设计操作步骤如下:

(1)定义主表的数据集,即订单头信息。

查询语句:

select  O.* from 订单 O order by 订单ID

数据集字段列表如下图:

(2)定义从表数据集,即订单行信息。

查询语句:

select D.*, P.产品名称 from 订单明细 D inner join 产品 P on D.产品ID=P.产品ID order by 订单ID

其中的JOIN是为了抓取【产品名称】信息,因为订单行数据表中只有【产品ID】字段,没有名称字段。

字段列表如下图:

 

(3)拖放表格1至设计区,右键点击明细行(表格第二行)单元格,选择【行操作】-【在下方插入行】,添加多个明细行。上面几个明细行中绑定订单头数据集的【订单ID】、【客户ID】等字段。最下面的明细行设置单元格合并,并且设置高度为正常高度的3倍,作为子表格的容器。如下图:

(4)删除表格的标题行(即表头)和汇总行(即表尾),如下图:

然后,设置表格1的主题样式为【无】,去掉各种框线和颜色设置。

(5)拖放表格2至设计区,绑定订单明细数据集,设置每个单元格的绑定字段。添加金额列,设置表达式为:=Fields!数量.Value * Fields!单价.Value。在汇总行设置单元格合并和合计金额表达式:=sum(Fields!数量.Value * Fields!单价.Value)。如下图:

(6)将表格2剪切到表格1的那个3倍行高的单元格中。

方法是:选中表格2,按Ctrl-X,点击表格1那个3倍行高的合并单元格,然后按Ctrl-V。

这种先在设计区设计好表格2,再剪切到表格1的操作,是为了方便表格2的各种操作。实际上也可以直接将表格2拖放到表格1的那个3倍行高的合并单元格中。

表格嵌套结果如下图:

(7)选中表格2,设置其【数据选项】中的【数据过滤】,如下图:

点击【添加项目】,然后设置【过滤选项】,实际上就是主从表之间的关联关系,如下图:

其中,【过滤条件】选中订单明细数据集的【订单ID】字段,【运算符】选【等于】,【数据】选择订单头数据集的【订单ID】字段。

这个设置的目的是让嵌套在主表格中的子表格(即表格2)只显示主表格当前订单ID的订单行信息。

(8)如果需要每个订单分页显示,可选中主表格(表格1),单击工具栏顶部第二个图标(分组管理),选中默认的行分组,然后设置【换页方式】为【结束位置】,如下图:

注意:如果希望所有订单连续显示,不要分页,就不要做这个操作。

(9)预览报表,效果如下图:

这是连续显示所有订单的效果。如果设置了分页,那么每个订单都会在单独的页面中显示。






  • No labels