其他数据集
除了常用的SQL检索数据集和复杂SQL数据集,还可以建立存储过程、TXT文件、XML文件、内建数据集、自定义数据集、SAP数据集、集算数据集等。
存储过程
存储过程就是编译好了的一些sql语句。应用程序需要用的时候直接调用就可以了,所以效率比较高。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和复杂的运算。存储过程可以返回结果集,可以返回参数,也可以同时返回结果集和参数。
存储过程的参数分为输入参数和输出参数两种。输入参数是存储过程执行的条件参数。输出参数类似于返回值,但是输出参数具有两个重要的优势:可以使用输出参数从存储过程传递出VarChar,Int,Money或任何其他数据类型的值,而返回值则只能返回整数。输出参数的另一个优势就是在一个存储过程中可以有多个输出参数,一个存储过程可以包含1024个参数(其中包括输入和输出参数),但是只能包含一个返回值。
举例:带有输入和输出参数的存储过程
存储过程
create or replace procedure EMP2(a in varchar, b out SYS_REFCURSOR)
is
aa varchar2(100);
V_SQL VARCHAR2(1000);
begin
aa:=a;
V_SQL:='select * from demo_EMPLOYEE where 雇员ID in ('||aa||')';
open b for
V_SQL;
end EMP2;
数据管理根目录-新建数据集-存储过程,进入存储过程数据集界面,如下图所示:
参数的顺序必须与问号的顺序保持一致,并指定参数模式。
注意:
存储过程可以没有输出参数,但是如果你的存储过程是将结果集返回给一个参数,则需要在配置-参数里定义该参数,并指定该参数的“参数模式”为“输出参数”。这个时候,如果你的数据库正好是oracle,则还需要将这个输出参数的结果类型设置为“游标”。
TXT文件
表示该数据集的数据来自TEXT文件,此时编辑的时候直接按照TXT文件格式编辑即可。
TXT文件的编辑格式如下:
- 第一行为列名定义,第二行为列的数据类型定义,第三行开始是数据。
- 其中第一行和第二行都可以省略,如果省略列名定义,那么表达式里引用列时用dsn.#n的方式,n代表列号;如果省略列数据类型定义,那么数据类型全部默认为字符型。 数据类型的定义采用java.sql.Types里的标准定义。
- 列间分隔符为TAB键,即\t,行间分隔符为回车键,即\n。
TXT数据集示例
下面是一个省略了第二行数据类型定义的例子,如下图所示:
XML文件
数据集如果是XML文件类型,此时编辑的时候直接按照xml文件格式编辑即可。
XML文件的编辑格式如下
- 根节点为ROWS。
- 根节点下第一个节点为列名定义,第二个节点为列的数据类型定义,第三个节点开始是数据。
- 列名和列的数据类型都可以不定义,如果省略列名定义,那么表达式里引用列时用dsn.#n的方式,n代表列号;如果省略列数据类型定义,那么数据类型全部默认为字符型。 数据类型的定义采用java.sql.Types里的标准定义。
- 一行数据为一个ROW节点定义。
注意:xml数据集文件中的内容要求无空格且必须在一行。
XML数据集示例
下面是一个只有两个字段的例子,如下图所示:
内建数据集
内建数据集是指数据集的结构和数据都存入报表模板,运算报表的时候不需要从数据源取数了。可以使用户快速的体验建立报表的过程,用户只需在报表设计器中定义一个内建数据集,录入一些数据就可以在报表中使用了,这样给用户的体验过程带来了极大的方便。也可以用于报表的跟踪调试,当报表预览结果和您预想的结果不符合时,可以把数据集转为内建,然后把报表模板发给技术支持人员,方便支持人员跟踪调试。
需要注意的是,内建数据集暂不支持参数过滤。
自定义数据集
如果报表的数据来源比较特殊,需要程序员自己处理,可以采用自定义数据集的方式,此时选择数据集的类型为自定义,然后在编辑界面中输入类名和需要用到的参数。
需要注意的是,自定义数据集的类文件需要手动放在应用程序里:
1.自定义数据集的类文件所在的包,放在\WEB-INF\classes文件夹下;
2.自定义数据集类中定义的数据集名与V5中新建的自定义数据集名需保持一致。
Excel数据集
当需要将Excel文件作为报表的数据来源时,可以使用Excel数据集方式建立数据集,并使用该数据集制作报表。
如果需要将该Excel文件中的全部数据作为来源,选择全部数据。(默认)
如果需要选择Excel文件中的部分数据作为来源,则需要定义数据的起始行、列,结束行、列。
默认情况下,系统会自动指定数据集的字段名和数据类型,数据类型默认为字符串。但也允许用户自定义,通过【定义字段名】便可以自定义字段名称和字段的数据类型。其中定义的字段名称以从上向下的顺序与起始列和结束列一一对应。
注意:目前仅支持excel2003格式的文件。
Excel数据集的制作
制作Excel数据集的步骤:
1.选择文件。选择本地的Excel2003格式的文件。
2.选择sheet表。根据1中选择的excel文件,自动获取excel文件中的sheet数,选择需要的sheet页数据来源即可。
3.选择数据。
4.预览数据集。
5.保存数据集。
便完成一个Excel数据集的建立,从而可以使用该数据集建立报表。
SAP数据集
在线演示
SAP数据集用于从系统中设置的SAP数据源中获取数据。
新建SAP数据集
【数据源管理】-新建SAP数据源,可参考SAP数据源。
数据管理根目录-新增资源【数据集】-SAP数据集。
进入SAP数据集设计界面,选择SAP数据源,取数函数是直接从SAP系统读取RFC函数,按函数关键字模糊查询或全部查询并显示在下拉列表中供选择。
选取函数后参数自动读取出来。
选择结果集和数据列。
SAP数据类型:RFC函数中的参数的数据类型,不可更改,直接通过函数刷新出来。
参数名称:RFC函数中的参数名称,不可更改,直接从RFC函数中刷新出来。
数据类型:指该参数报表中对应的参数数据类型。
参数类型:可支持普通参数、动态参数和会话变量。
默认值:可读取参数设置的默认值,可编辑。
数据列:勾选列名预览数据,数据集中数据列名称使用SAP数据列名称。
注意:
目前输出只能选择一个结果集,假如函数输出有多个结果集,可以在输出的下拉框中选择要输出的结果集名称,如果需要输出所以的结果集,比如说有两2个结果集,那么应通过新建2个SAP数据集,每个数据集选择一个结果集进行输出。
集算数据集
集算数据集基于集算器脚本获取数据。集算器脚本是通过另一款专业软件“集算器”来完成的。
集算器如何使用可参考集算器软件中的帮助->教程。官网下载集算器。
如何使用集算数据集
配置数据源,在AppPath/WEB-INF目录下esprocJDBCconfig.xml文件中配置数据源,数据源名称必须与集算器脚本中的数据源名称一致。
<DB name="demo">
<property name="url" value="jdbc:hsqldb:hsql://127.0.0.1:9002/gezdemo"/>
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<property name="type" value="HSQL"/>
<property name="user" value="sa"/>
<property name="password" value=""/>
<property name="batchSize" value="1000"/>
<property name="autoConnect" value="true"/>
<property name="useSchema" value="true"/>
<property name="addTilde" value="true"/>
</DB>
将后缀为dfx集算器脚本放置到 AppPath/mis2/dataManager/xml目录下。
新建数据集时选择【集算数据集】类型。
进入集算数据集设计界面,点击【选择】在mis2->dataManager->xml中选择要使用的集算器脚本。
点击【获取数据结构】可查看集算器返回的二维表结构。
最后保存即完成集算数据集的创建。
注意:集算器脚本数据来源于文件,在集算数据集中暂不支持相对路径。