# 报表特点 单表式主子报表的特点,是用单个报表实现主子表的业务逻辑。一般数据集会有两个以上,分别是主表的数据集和子表的数据集,在展现上,一般要求主表以自由格式展现,子表以列表格式展现,为一对多的关系,子报表可能同时存在多个。单表式主子报表操作比较方便,而且可以进行数据填报。 # 报表样例 制作“客户订单表”,展现客户及其订单的数据信息。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_81452e2646d874ada6f777997f40f2d8_r.png) # 制作方法 ## 第一步 定义数据集 报表中的第一个数据集ds1是从产品自带演示数据库的“演示 _ 订单表”取数,数据集sql语法如下: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_c516d0a975d0376190c5536474c21b90_r.png) 报表中的第二个数据集ds2是从产品自带演示数据库的“演示 _ 订单明细表”取数,数据集sql语法如下: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_7a983f61aac0011bfe338fc05a38ba12_r.png) ## 第二步 制作表样 绘制出报表基本结构: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_6875f78e8ff2767623db74b94eec1a64_r.png) ## 第三步 定义单元格表达式 1)设置主表部分的单元格表达式。 选择单元格快捷公式中的【列表】,将数据集ds1中的字段“订单ID”拖入B2单元格,然后再选择快捷公式中的【取值】,将数据集ds1中的其余字段分别拖入主表其它对应的单元格中,例如拖入字段“发货日期”到D2,拖入字段“客户ID”到B4。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_24476539f28ea242fe32aff4f2da8920_r.png) >拖拽完成后,取数表达式如下: B2:`=ds1.Select(订单ID)` D2:`=ds1.发货日期` F2:`=ds1.到货日期` B4:`=ds1.客户ID` F4:`=ds1.货主名称` B6:`=ds1.运货商ID` D6:`=ds1.运货费` F6:`=ds1.货主城市` 2)设置子表部分的单元格表达式。 B9单元格是需要从数据集ds2中订单ID与B2单元格的值相等的记录里选出字段“产品ID”的全部值并按照升序列表显示,设置表达式为`=ds2.Select(产品ID,false,订单ID==B2)` >利用Select()函数可以设置数据过滤条件表达式,来实现子表区域B9单元格数据与主表区域B2单元格数据之间的关联,即B9单元格只列表显示B2订单所销售的产品ID。如果不设置上面的“订单ID==B2”条件表达式,则B9单元格会显示出全部订单所销售的产品ID,无法实现主子表之间数据的关联运算。 选择单元格快捷公式向导的“取值”,将数据集ds2中的字段“单价”、“折扣比例”、“数量”依次拖入单元格C9、D9、E9,生成的表达式依次为: C9:`=ds2.单价` D9:`=ds2.折扣比例` F9:`=ds2.数量` F9单元格表达式引用前面的C9、E9单元格的值进行计算,设置表达式为`=C9*E9`。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_a77bd8cfd8a77c53a87517257959cb9a_r.png) ## 第四步 设置父子格 设置单元格A1、A2、A3、A4、A5、A6、A7、A8、A9、A10跟随B2向下扩展,如下图: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_3ba86289996ea40eec499a55c0c2dd7f_r.png) 即它们的左主格为B2。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_e6143963648569836194d5ac04fa41b9_r.png) >A1-A10一共十个单元格左边都没有纵向扩展格,因此其左主格缺省为`0 格。然后我们对这些单元格人为设置了左主格为B2,让这些格子都跟随B2格的订单ID进行纵向扩展,所以就形成了按照每个订单ID号都能扩展出一片主子表的报表效果,最终形成样例中的多片扩展。 ## 第五步 设置显示格式 设置单元格D2、F2的显示格式为“yyyy年MM月dd日”。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_0e4b5bc4d15ae0d0037f0f95a1a67e0f_r.png) 设置单元格D6、C9、F9的显示格式为“¥#0.00”。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_10dbab47ee4c8e6983c63c98768ddf12_r.png) ## 第六步 设置行后分页 选中A10单元格,在右侧属性栏中,勾选【分页】下的【行后分页】,实现打印时每张订单单独打印。如下图所示: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_170ee99cbef6728fd7d79965e97fce38_r.png) ## 第七步 保存预览 点击预览按钮,再弹出的保存页面设置资源名称、文件名称均为“客户订单表”。 预览页面如下图所示: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_08aa8d9159dd4b68638da1cad58e6db7_r.png)