网络式报表,体会扩展
一、报表实例
制作如下图所示的“运货信息表1”:
二、设计过程:
第1步:新建报表
点击【新增资源】,选择“复杂报表”,点击【下一步】进入“自定义复杂报表”设计器界面。
第2步:定义数据集
demo_运货信息:select 订单ID,订购日期,运货商ID,运货费,货主名称,到货日期 from DEMO_ORDERS
在快逸报表V5.0管理平台的【数据管理】-【数据集管理】界面,选择数据源demo。
1. 点击【新增数据集】按钮后,弹出窗口“新建数据集”。
2. 点击【SQL检索】的图标,进入SQL检索的数据集创建窗口。
3. 选择表与字段
在“选择表与字段”标签页中:
(1) 在“数据表”区域点【选择主表】,勾选数据表DEMO_ORDERS;
(2) 在“数据表字段”区域勾选字段;
(3) 连续点三个【下一步】进入“预览”标签页。
4. 预览
在“预览”标签页中的“语法”区域,可以看到新建的数据集的sql语句。点击【数据预览】按钮,可以查看新建的数据集中的数据。
5. 保存
点击【保存】按钮,弹出提示框,输入数据集名称“demo_运货信息”,确定。
完成数据集的创建,可以看到“demo_运货信息”数据集已经添加到demo数据源的数据集列表中了。
回到复杂报表设计器窗口,点击【引用数据集】按钮,勾选“demo_运货信息”,【确定】引用数据集,展开后,能看见被引用的所有字段。
第3步:编辑报表
(1)左键点住字段“订单ID”拖拽到空白表的A2格,在弹出的“单元格向导”中选择“列表”,【确定】后,设计器自动生成A2单元格的表达式:=demo_运货信息.Select(订单ID)
(2)左键点住字段“订购日期”拖拽到空白表的B2格,在弹出的“单元格向导”中选择“取值”,【确定】后,设计器自动生成B2单元格的表达式:=demo_运货信息.订购日期
(3)在数据集面板的快捷公式栏勾选“取值”,左键点住字段“运货商ID”拖拽到空白表的C2格,设置C2单元格的表达式:=demo_运货信息.运货商ID
(4)设置D2单元格的表达式:=demo_运货信息.运货费
(5)设置E2单元格的表达式:=demo_运货信息.货主名称
(6)设置F2单元格的表达式:=demo_运货信息.到货日期
除拖拽外,单元格的表达式也可以直接写入单元格。
(7)在A1~F1单元格里分别填入字段标题“订单ID”、“订购日期”、“运货商”、“运货费”、“货主”和“到货日期”,给报表加上边框。
第4步:保存预览
将此报表保存为“运货信息表1”,预览效果如下图所示:
第5步:打印导出
三、小结
1. 数据集
数据集是一个二维的视图,是报表的数据来源。数据集可以通过数据库的sql查询获得,也可以来自其他异构的数据文件。
报表运算引擎不关心数据集的数据来自哪里,始终基于数据集的数据来运算报表。因此,制作报表的第一步就是定义数据集。
2. 定义数据集
具体步骤:
在报表管理平台的【数据管理】-【数据集管理】界面,选择数据源。
第1步:点击【新增数据集】按钮后,弹出窗口“新建数据集”。
第2步:输入数据集名称后,点击“SQL检索”的图标,系统会自动跳到SQL检索的数据集创建窗口。
注意:数据集名不能为纯数字。
第3步:选择表与字段
选择表与字段的步骤为:
(1) 在“数据表”区域点【选择主表】,勾选数据表;
(2) 在“数据表字段”区域勾选字段;
(3) 点击【下一步】按钮,进入“检索条件、计算指标、排序”标签页。
第4步:检索条件、计算指标、排序
检索条件是设置数据集时的SQL检索过滤条件,用来过滤掉用户不需要显示的内容。
(1) 从左侧“已选数据表字段”区域中,用户可以看到由所选择的数据、数据表及其字段构成的新的数据集。
(2) 用户也可以在“检索条件”区域增加通用查询条件,从数据管理中对数据集进行过滤。
注意,增加的查询条件作为参数使用,因此需要再增加一个参数。
(3) 用户可以增加“计算指标”,使用已有的数据集字段及表达式构成新指标,作为新的数据及字段使用。
(4) 从左侧拖拽需要排序的字段至“排序”区域,并选择排序方式,即可对字段进行排序,还可以通过“上移”或“下移”按钮来设置排序的优先级。
(5) 点击【下一步】按钮,进入“参数”标签页。
第5步:参数
如果用户增加了一个查询条件,就需要在这里增加一个参数,可以设置参数的类型、默认值等。
第6步:预览
“语法”区域显示最终的数据集sql语句,方便用户检查和修改。
“输入显示条数”后,点击【数据预览】按钮,可以查看新建的数据集中的数据。
第7步:保存
点击【保存】按钮,完成数据集的创建,回到【数据集管理】界面,可以看到新的数据集已经添加到数据集列表中了。
3. 设置标题位置
通过工具栏上的 ,可以将字段标题设为上对齐、垂直居中、下对齐、左对齐,水平居中和右对齐。
4. 保存报表
报表设计好后,点工具栏上的 ,保存报表。
5. 网格式报表
网格式报表是将数据以列表的形式展现,设计的关键是先用列表函数Select将主要字段的数据选出,再用ds.colname取与之相关的字段的对应数据值。
Select函数选出一组字段值后,该组字段值保留了一个指针,指向数据集中的源记录,也就是说,该组字段值和数据集中的记录保持一一对应的关系。因此在Select函数所在单元格(A2)的附属单元格里(B2、C2、D2等),采用ds.colname表达式从当前数据集里取其它字段的值,默认从当前主格(A2)指向的记录里取值,不需要到数据集中检索。所以,在Select函数的附属格里,建议尽量使用ds.colname表达式,而不采用ds.select1(colname,filterexp),因为后者需要对表达式进行解析,速度较慢。
6. 扩展
扩展是单元格的一个基本属性。当单元格的数据值表达式为集合表达式时,该单元格默认为可扩展单元格。如本节报表例子中的A2单元格。
在扩展时,复制出的单元格的数据值依次为表达式的结果数据值,表达式返回几个值,单元格就复制几个。复制出来的新单元格的所有属性都引用被复制单元格的属性。
四、函数说明
select()
函数说明: 从数据集的当前行集中选取符合条件的记录
语法: datasetName.select(<select_exp>{, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} )
datasetName.select(<select_exp>, , <filter_exp>)//适用于不需排序或数据集中已排好序
参数说明:
select_exp 要选择的字段列名/列号,或表达式,列号用#n表示,例如:#0代表第0列,#1代表第1列,依此类推
desc_exp 指定数据排序的顺序,true表示降序排列,false表示升序排列
filter_exp 数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位
sort_exp 数据排序表达式,当此项为空时先检查desc_exp是否为空,如果为空,则不排序,否则使用select_exp排序。
rootGroupExp 是否root数据集表达式,为true,从数据集里取数,为false, 则从本单元格主格的结果集里取数
返回值: 一组数据的集合,数据类型由select_exp的运算结果决定
示例:
例1:ds1.select(name) 从数据集ds1中,选取name字段列的所有值,不排序。
例2:ds1.select(#2, true) 从数据集ds1中,选取第二个字段列的所有值,降序排列。
例3:ds1.select(name,false,sex=='1') 从数据集ds1中,选取sex=='1'的name字段列的值,升序排列。
例4:ds1.select(name,true,sex=='1',id) 从数据集ds1中,选取sex=='1'的name字段列的值,按id字段降序排列。