可通过报表 - 数据集菜单,添加集算器数据集,集算器数据集需要引用集算器的spl文件。通过在spl文件的网格程序中使用return语句,同时向报表返回一个或多个结果集,报表数据集设置中添加的数据集名称与集算器文件中return后面以逗号分隔的结果集是一一对应的。报表会自动寻找集算器文件中的return语句,并将结果返回到报表数据集中。
return语句可以写在网格中的任何位置,集算器执行到return时就会向报表返回结果集。
集算器类型数据集界面如下:
能够作为数据集类型被使用的集算器文件,如果用的是报表当前连接的数据源,程序有自动连接数据库机制,集算器文件中可以直接使用db.query()。如果用的不是报表当前连接的数据源,首先集算器文件中必须通过connect(”db”)函数建立数据连接,再进行查询,最后通过close()函数关闭该连接。
● 举例:通过return从集算器文件中取数(无参数)
集算器文件的内容如下:
在数据集设置窗口中点击【增加】按钮,弹出数据集类型对话框。
选择“集算器”数据集类型,点击【确定】按钮,进入集算器数据集编辑界面,如下图所示:
点击集算器文件后面的按钮,选择集算器文件的文件名
集算器文件路径既可以是绝对路径也可以是相对路径,在设计器中的相对路径是相对于工具 - 选项 - 集算器选项中配置的【寻址路径】,在WEB端是相对于 raqsoftConfig.xml中的Esproc里的splPath路径。
注:
当勾选“脚本文件优先在WEB应用中查找”使用相对路径时,集算器文件会优先在WEB应用路径中查找。
点击【确定】按钮,即完成了集算器类型数据集的建立。
● 举例:通过参数从集算器文件中取数的数据集
1. 集算器文件的内容如下:
2. 集算器设计器中为.splx文件中添加参数
3. 在数据集设置窗口中点击【增加】按钮,弹出数据集类型对话框。
4. 选择“集算器”数据集类型,点击【确定】按钮,进入集算器数据集编辑界面,如下图所示:
说明:点击集算器文件后面的按钮,选择集算器文件后会自动将.splx中的参数列在集算器数据集窗口的参数列表中,用户可根据需要修改参数值即可,如下图:
点击【确定】按钮,即完成了集算器类型数据集的建立。
● 举例:通过return语句从集算器文件中返回多个数据集
集算器文件的内容如下:
1. 新建集算器类型的数据集;
2. 设置集算器文件,集算器文件内容如上所示;
3. 如果需要传参,给参数赋值;
4. 点击【确定】按钮,生成数据集;(如果返回多个数据集,报表定义数据集的地方写上多个数据集的名称,集算器会依次将return的返回值与这些报表数据集对应)
数据集ds1中的数据来自于集算器文件“p02.splx” 中的A2单元格,数据集ds2中的数据来自于集算器文件“p02.splx” 中的A3单元格中。
●注意:在集算器数据集编辑界面中设置的数据集的个数必须与spl文件中设置的数据集个数一致;集算器中返回多个结果集时,需在return后面用逗号分隔。
● 举例:多层数据集的使用
集算器文件return结果中的某个字段值为一条记录或者排列时返回的结果序表则为多层数据集(数据集中可有多个字段值为记录或排列的字段)。引用多层数据集的语法与集算器语法相同。
集算器文件的内容如下:
1. 新建集算器类型的数据集;
2. 设置集算器文件;
3. 点击【确定】按钮,生成数据集;
4. 查看报表右下角有多层数据集显示如下:
非主子关系的数据集相互无关,比如ds1.员工.STATE 和 ds1.员工.DEPT 之间完全没关系。ds1.员工和ds1.员工.DEPT 则是主子关系。当返回结果为多层数据集时,引用多层数据集的语法和集算器相同,如“=ds1.员工.NAME”。
●注意:能够作为数据集类型被使用的集算器文件,如果用的是报表当前连接的数据源,程序有自动连接数据库机制,集算器文件中可以直接使用db.query()。如果用的不是报表当前连接的数据源,首先集算器文件中必须通过connect(”db”)函数建立数据连接,再进行查询,最后通过close()函数关闭该连接。