自定义数据集

1 用途

通常报表的数据都来自数据库,但也有特殊情况,例如通过中间件连接数据库,而非直接连接等,需要用户自定义数据集。

皕杰设计器中自定义数据集的应用:

选择【工具栏】->【窗口】->【首选项】->【通用配置】->【类加载配置】,在【自定义接口实现类配置】中添加自定义类,添加方式有两种,

一是将编译好的.class文件打成jar包, 点击【添加JAR】,将jar包导入;

二是点击【添加文件夹】,将包含.class文件的文件夹添加进来。

添加完毕后,新建数据集,名称为ds,数据源不选,类型选择为自定义类型。

点击下一步,在编辑查询sql里写上自定义数据集类的全路径。

然后点击下一步,将需要向自定义数据集中传参的参数选择进来。

数据集的参数序号和自定义数据集代码中的applyParams方法中的(java.lang.Object[] params)object数组一一对应。

然后点击完成,自定义数据集就创建完成了。

web中自定义数据集的应用:

web中添加自定义数据集也有两种方式:

一是将编译好的.class文件打成jar包,放到WEB-INF\lib文件夹里;

二是将.class文件放到WEB-INF\classes目录下。

2 类介绍

用户自定义数据集需实现bios.report.api.customize.CustomDataSet接口。自定义数据集基础接口,直接实现该接口无效,应根据数据需要实现ArrayDataSet或IteratorDataSet

3 方法说明

bios.report.api.customize.CustomDataSet接口:

applyParams

语法:void applyParams(java.lang.Object[] params)

用途:应用数据集参数,以实现动态获取数据。

参数:params - 参数列表,Object数组,与设计器中指定的数据集参数一一对应。

getMetaData

语法:java.lang.String[] getMetaData()

用途:获取数据元信息,主要用以在设计器中展示数据集的结构。

返回值:列名数组,长度要与数据列数一致

bios.report.api.customize.ArrayDataSet接口:自定义数据集接口,用户可以实现该接口,以自定义的方式完成报表中某个数据集的数据准备和加载。该接口适合一次性的数据加载模式。 实现类需要一个无参数的构造方法。

getRowCount

语法:public abstract int getRowCount()

用途:获取该数据集中数据的总行数

返回值:数据总行数

getRowData

语法:public abstract java.lang.Object[] getRowData(int rowIndex)

用途:获取指定行的数据

参数:rowIndex - 数据行序号,从0开始。

返回值:代表一行数据的Object数组

bios.report.api.customize.IteratorDataSet接口:自定义数据集接口,用户可以实现该接口,以自定义的方式完成报表中某个数据集的数据准备和加载。该接口适合逐条数据迭代加载的模式。 实现类需要一个无参数的构造方法。

nextRow()

语法:java.lang.Object[] nextRow()

用途:加载数据集中下一行的数据

返回值:代表一行数据的Object数组;返回null时,表示数据加载完毕。