一、报表实例
制作如下图所示的“产品信息清单”报表,其中的数据来自三个数据集。
二、设计过程
1、引用数据集ds20, demo_product, demo_cate
ds20:select DEMO_SUPPLIERS.SUPPLIERID, DEMO_SUPPLIERS.COMPANYNAME, DEMO_SUPPLIERS.CONTACTOR, DEMO_SUPPLIERS.CONTACTORPOST, DEMO_SUPPLIERS.ADDRESS, DEMO_SUPPLIERS.CITY from DEMO_SUPPLIERS
2、编辑报表
(1)B4单元格表达式:=demo_product.Group(类别,false),显示值:demo_cate.select1(类别名称,类别ID==value())
(2)C4单元格表达式:=demo_product.Select(产品名称)
(3)D4单元格表达式:=demo_product.单价,显示格式:¥#0.00
(4)E4单元格表达式:=demo_product.单位数量
(5)F4单元格表达式:=demo_product.库存量
(6)G4单元格表达式:=demo_product.订购量
(7)H4单元格表达式:=demo_product.供应商ID,显示值:ds20.select1(COMPANYNAME,value()==SUPPLIERID)
(8)I4单元格表达式:=ds20.select1(CONTACTOR,SUPPLIERID==H4)
(9)J4单元格表达式:=ds20.select1(CITY+ADDRESS,SUPPLIERID==H4)
(10)K4单元格表达式:=demo_product.中止,显示值:if(value()==0,"正常供应中","产品已中止供应")
(11)K1单元格表达式:=now(),显示格式:yyyy-MM-dd
(12)设置报表不分页
三、小结
本节报表中,B4和H4格的显示值都用到了select1()函数,不同数据集之间数据的关联(I4,J4单元格表达式)也是通过select1()函数完成的。
下面我们对select1()函数做一下介绍。
四、函数说明
select1()
函数说明:从数据集中,按顺序检索到符合过滤条件的第一条记录,返回选择的字段值
语法: datasetName.select1(selectExp{,filterExp{,rootGroupExp}})
参数说明:
selectExp 要选择的字段列名/列号,或表达式
列号用#n表示,例如:#0代表第0列,#1代表第1列,依此类推
filterExp 过滤条件
rootGroupExp 是否root数据集表达式,为true,从数据集里取数,为false, 则从本单元格主格的结果集里取数
返回值:数据类型由selectExp的运算结果决定
特别说明:当对数据集运用过滤条件后,确定只剩一条记录时,虽然同select()的运算结果一样,但是select1()运算效率高,因为它只要找到符合条件的记录,就不继续检索了,而select()要检索完所有的记录才返回。
示例:
例1:ds1.select1(name) 返回数据集ds1中第一条记录的name字段值。
例2:ds1.select1(name,score>90) 从数据集ds1中检索出成绩大于90的记录,返回第一条记录的name字段值。