单表式主子报表
单表式主子报表
单表式主子报表的特点是用单个报表实现主子表的业务逻辑。一般数据集会有两个以上,分别是主表的数据集和子表的数据集,在展现上,一般要求主表以自由格式展现,子表以列表式展现,为一对多的关系,子报表可能同时存在多个。单表式主子报表操作比较方便,而且可以进行数据填报。
第一步:打开设计器
第二步:连接数据源
第三步:新建空白报表
第四步:定义数据集
ds1:SELECT 订单明细.单价,订单明细.产品ID,订单明细.折扣,订单明细.数量,订单明细.订单ID,订单.订单ID,订单.客户ID,订单.发货日期,订单.到货日期,订单.货主名称,订单.运货商,订单.运货费,订单.货主城市 FROM 订单,订单明细 WHERE 订单.订单ID = 订单明细.订单ID
第五步:定义表达式
1,在 B2单元格输入表达式:= ds1.dselect(订单ID) 设置B2单元格的左主格为:`0
2,在D2单元格输入表达式:= ds1.发货日期 设置显示格式为:yyyy年MM月dd日
3,在F2单元格输入表达式:= ds1.到货日期 设置显示格式为:yyyy年MM月dd日
4,在B4单元格输入表达式:= ds1.客户ID
5,在F4单元格输入表达式:= ds1.货主名称
6,在B5单元格输入表达式:= ds1.运货商
7,在D5单元格输入表达式:= ds1.运货费 设置显示格式为:¥#0.00
8,在F5单元格输入表达式:= ds1.货主城市
9,设置A8单元格的左主格为B8
10,在B8单元格输入表达式:= ds1.select(产品ID,false,订单ID==B2,,true) 设置B8单元格的左主格为B2单元格
11,在C8单元格输入表达式:= ds1.单价 设置显示格式为:¥#0.00
12,在D8单元格输入表达式:= ds1.折扣
13,在E8单元格输入表达式:= ds1.数量
14,在F8单元格输入表达式:=C8*E8 设置显示格式为:¥#0.00
15,设A1、A2、A3、A4、A5、A6、A7、A9单元格的左主格为B2单元格。 将这些单元格的左主格设为B2的目的是为了使B2单元格扩展的时候其它单元格随着一起扩展,从而实现单表式主子报表。
16,设A9单元格为行后分页,实现打印时每张定单单独打印。并将第9行下边框设为蓝色,对不同订单加以区分。
第六步: 美化外观
第七步:保存预览 此报表保存为9.1.raq,预览效果如下图所示:
第八步:发布报表
-
dselect函数说明
从数据集的当前行集中选取符合条件的记录,选出字段相同的行将会只保留第一行
语法: datasetName.dselect( <select_exp>{, filter_exp{,rootGroupExp}} )
参数说明: select_exp 要选择的字段列名/列号,,也可以是表达式。 列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filter_exp 数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。 rootGroupExp 是否root数据集表达式
返回值: 一组数据的集合,数据类型由select_exp的运算结果决定 函数
示例: 例1:ds1.dselect( name ) 从数据源ds1中选取name字段列的所有值,name相同的纪录只会保留第一个