一、报表实例
制作“客户订单表”,展现客户及其订单的数据信息。
二、设计过程
1、引用数据集ds6
ds6:select * from DEMO_ORDERS,DEMO_ORDERDETAILS where DEMO_ORDERS.订单ID=DEMO_ORDERTAILS.订单ID
2、编辑报表
(1)B2单元格的表达式:=ds6.dselect(订单ID),设置B2单元格的左主格为:`0
(2)D2单元格的表达式:=ds6.发货日期,显示格式为:yyyy年MM月dd日
(3)F2单元格的表达式:=ds6.到货日期,显示格式为:yyyy年MM月dd日
(4)B4单元格的表达式:=ds6.客户ID
(5)F4单元格的表达式:=ds6.货主名称
(6)B5单元格的表达式:=ds6.运货商ID
(7)D5单元格的表达式:=ds6.运货费,显示格式为:¥#0.00
(8)F5单元格的表达式:=ds6.货主城市
(9)设置A8单元格的左主格为B8
(10)B8单元格的表达式:=ds6.select(产品ID,false,订单ID==B2,,true),设置B8单元格的左主格为B2单元格
(11)C8单元格的表达式:=ds6.单价,显示格式为:¥#0.00
(12)D8单元格的表达式:=ds6.折扣比例
(13)E8单元格的表达式:=ds6.数量
(14)F8单元格的表达式:=C8*E8,显示格式为:¥#0.00
(15)设置A1、A2、A3、A4、A5、A6、A7、A9单元格的左主格为B2单元格。
(16)设置A9单元格为行后分页,实现打印时每张订单单独打印。并将第9行下边框设为蓝色,对不同订单加以区分。
三、小结
本节报表中,数据集ds6是由两个数据表连接查询而来的,存在重复数据,通过dselect()函数筛选出唯一不同的数据。
下面我们介绍一下dselect()函数。
四、函数说明
dselect()
函数说明:从数据集的当前行集中,选取符合条件的记录,选出字段相同的行将会只保留第一行。
语法: datasetName.dselect( <select_exp>{, filter_exp{,rootGroupExp}} )
参数说明:
select_exp 要选择的字段列名/列号,或表达式,列号用#n表示,例如:#0代表第0列,#1代表第1列,依此类推
filter_exp 数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位
rootGroupExp 是否root数据集表达式,为true,从数据集里取数,为false, 则从本单元格主格的结果集里取数
返回值:一组数据的集合,数据类型由select_exp的运算结果决定
示例:
例:ds1.dselect(name) 表示,从数据集ds1中,选取name字段列的所有值,name相同的记录只会保留第一个。
课后练习:
1、说明以下报表需要用到的数据集函数:
(1)多源关联的网格式报表
(2)网格式报表
(3)数据集中有重复数据的主子报表
(4)采用单值定义法的显示值表达式
2、写出下列函数的含义:
(1)ds1.select1(name,score>90)
(2)ds1.dselect(name)
(3)ds6.select(产品ID,false,订单ID==B2,,true)
(4)ds20.select1(CITY+ADDRESS,SUPPLIERID==H4)
(5)ds1.select(#2,true)
(6)demo_cate.select1(类别名称,类别ID==value())
(7)ds1.select(订单ID)
(8)ds9.select(name,false,sex=='1')
(9)ds5.select(name,true,sex=='1',id)