在报表工具中使用esProc作为数据源

来源:互联网 发布:淘宝店铺不在了 编辑:程序博客网 时间:2024/04/30 11:41
        esProc将计算能力封装成标准的JDBC接口,可作为报表工具的数据源。

        普通数据库的JDBC驱动仅是一个接口,实际运算在作为服务器运行的数据库进行;与之不同的是,esProc JDBC已经嵌入了全部运算引擎,不再需要独立的服务器,这样就需要将esProc JDBC用到的jar都加到入应用(如报表工具)的类路径中。

      esProc JDBC实现了JDBC的存储过程调用接口,通过该接口执行网络程序(dfx)并返回结果集。可以将esProc JDBC逻辑上看作是一个没有表的数据库。  

     下面以JasperReport为例说明中如何在报表工具中应用esProc JDBC数据源。

      先看一个无参数的简单例子,设有如下的esProc程序文件my.dfx

其中A1格的计算结果为:

      在 JasperReport中的具体集成步骤:

1, 创建esProc JDBC的配置文件dfxConfig.xml:

<?xml version="1.0" encoding="UTF-8"?>

<dfxConfig>

    <!—dfx文件的存放目录,上述my.dfx即放在此,在这里配置目录后esProc JDBC才能正确找到-->

<paths>c:\\</paths>

<!-- 配置dfx执行时用到的数据源,该节点下可以有配置任意多个数据源, -->

    <jdbc-ds-configs>

    <!-- 单个数据源配置, -->

        <jdbc-ds-config>

        <!-- 数据源名称,必须和dfx程序中用到的相同 -->

            <name>mysql</name>

               <url>jdbc:mysql://192.168.0.95:3306/test</url>

            <driver>com.mysql.jdbc.Driver</driver>

            <userName>root</userName>

            <password>123456</password>

            <dbCharset>iso8859-1</dbCharset>

            <clientCharset>iso8859-1</clientCharset>

            <useSchema>false</useSchema>

            <caseSentence>false</caseSentence>

            <needTranContent>false</needTranContent>

            <needTranSentence>false</needTranSentence>

        <!-- dfx中使用该数据源时,是否自动连接 -->

            <autoConnect>true</autoConnect>

        </jdbc-ds-config>

    </jdbc-ds-configs>

</dfxConfig>

2, 将esProc JDBC相关的jar加入到类路径中(菜单项Tools->Options->classpath)。共有4个

                  dm.jar              运算引擎

                  log4j_128.jar       Apache的日志包

                  icu4j_3_4_5.jar     IBM的国际化包

                  poi2.jar            Apache的EXCEL读写包,dfx中没用到则可不加。

        这些jar可在 [esProc安装目录]\designer\lib下找到。

        当然,在dfx中用到的其它数据库驱动也要放进这类路径中,如我们这里用的是MY SQL。

        还要加一个目录到classpath中用于存放dfxConfig.xml,同时将上面编辑的dfxConfig.xml置于该目录(下面中的最后一行)。

 

也可以将dfxConfig.xml直接加到dm.jar中(要放在它的根目录下),这样就不需要在classpath中添加这个用来存放它的目录了,不过这样在每次修改dfxConfig.xml时需要重新打这个jar包。

 

3, 创建Database JDBC connection类型的数据源dfxjdbc,如下图:

       只要填入Driver和URL即可,由于没有独立的服务器,这里URL必须是local。 esProc JDBC不是完整的数据库,无须用户名和口令。

      现在JasperReport中多了一个数据连接。

4, 在报表向导用dfxjdbc数据源创建报表。在Query步骤中输入“call my()”,这里的my即对应我们前面的my.dfx。

JasperReport将取出my.dfx返回结果集的字段:

将这些字段拖拽到设计面板,即生成如下报表:

5, 运行预览

esProc JDBC还可以支持参数传递,设有如下带参数的网络程序文件my2.dfx

运行时,将param1,param2的参数值分别设置为"male"和30,就会获得如下结果:

 

在上述无参数报表的基础上,我们继续操作以下步骤来使用有参数的my2.dfx:

1、 编辑上面报表的Query(右键选择“Edit Query”):

2、 添加p1,p2两个参数:

3、 把p1,p2拖拽入到查询语句,并补上逗号和括号,最终的查询语句为“call my2($P{p1},$P{p2})”,如下图:

4、 完成编辑,运行预览,JasperReport将弹出如下对话框两次,分别要求输入p1,p2参数的值:

报表预览结果如下:

尾注:关于esProc JDBC的更深入信息,特别是dfxConfig.xml的详细说明,请参考esProc官方文档( www.esproc.com可下载)

原创粉丝点击