dselect()函数| 快逸报表工具
V5教程-表达式与常用函数

一、报表实例

制作“客户订单表”,展现客户及其订单的数据信息。

二、设计过程

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)