润乾API计算报表组

一些客户要把报表组放到CS模式下运行,而不是我们平时所使用的BS模式,客户在CS模式中要展现报表组,并且用API给报表构造所需要的数据库连接,也就是数据源。这样也就没有了我们平时配置的数据库连接池等属性,所有的代码都要写到一个java类里面。

下面就用代码来示范一下如何在CS模式中实现报表组的计算和展现。

第一步:制作好一个报表组,也就是rpg文件,报表组的样式如下图所示:

值得注意的是由于是在java类里面,没有报表应用的运算环境,所以子报表都用绝对路径的形式引入。

 

第二步:在java类里面获取报表运算所需要的数据库连接。

这里写了一个连接demo数据库的工具类,类返回的是一个Connection对象,类的代码如下:

 

 

import java.sql.*;

public class ConnectDemo {

    private String driver = “org.hsqldb.jdbcDriver”;

    private String url = “jdbc:hsqldb:hsql://localhost/runqianDB”;

    private String user = “sa”;

    private String passwd = “”;

    Connection conn = null;

   

    public  Connection  getConnection(){

     try {

       Class.forName(driver);

       conn=DriverManager.getConnection(urluserpasswd);

    } catch (ClassNotFoundException e) {

       // TODO Auto-generated catch block

       e.printStackTrace();

    } catch (SQLException e) {

       // TODO Auto-generated catch block

       e.printStackTrace();

    }

     

     return conn;

 }

}

第三步:将数据库连接放到报表的运算环境中,并且设定报表的数据源。

对应的代码如下:

ConnectDemo cd = new ConnectDemo();

    Connection conn = cd.getConnection();

    DataSourceConfig dsc = new DataSourceConfig(DBTypes.UNKNOWN,true“GBK”“GBK”false);

    Context ctx = new Context();

    ctx.setConnection(“demo”, conn);

    ctx.setDataSourceConfig(“demo”, dsc);

    ctx.setDefDataSourceName(“demo”);//设置默认数据源

 

第四步:计算报表组,并分别在CS模式中展示报表组中的报表项。

API构造报表引擎,在调用上一步中构造的报表组运算环境运算报表,并分别在CS模式中展示报表组中的报表项,具体的代码如下:

ExtCellSet.setLicenseFileName(“D:/安装文件/润乾安装/License4.0[64100621100826_640000]/技术应用中心专用授权Server2010-12-31V4.0Windows.lic”);//设置授权

    GroupEngine ge = new GroupEngine(reportgroup, ctx);//构造引擎   

    IReport report1 = ge.get(0);//计算报表组中的报表项1

    IReport report2 = ge.get(1); //计算报表组中的报表项2

    CSReport csr1 = new CSReport(report1);

    JFrame frame1 = new JFrame();

    frame1.getContentPane().add(csr1.getDisplayPane());

    frame1.setSize(1200, 800);

    frame1.setLocation(200, 100);

    frame1.setVisible(true);

    CSReport csr2 = new CSReport(report2);

    JFrame frame2 = new JFrame();

    frame2.getContentPane().add(csr2.getDisplayPane()); 

    frame2.setSize(1200, 800);

    frame2.setLocation(200, 100);

frame2.setVisible(true);

完整的代码如下所示:

import java.sql.Connection;

 

import javax.swing.JFrame;

 

import com.runqian.base4.util.DBTypes;

 

import com.runqian.report4.model.engine.ExtCellSet;

import com.runqian.report4.usermodel.CSReport;

import com.runqian.report4.usermodel.Context;

import com.runqian.report4.usermodel.DataSourceConfig;

import com.runqian.report4.usermodel.IReport;

import com.runqian.report4.usermodel.ReportGroup;

import com.runqian.report4.util.ReportUtils;

import com.runqian.report4.ide.GroupEngine;

 

 

 

public class TestGroup {

           /**

 * @param args

            * @throws Throwable

 */

public static void main(String[] args) throws Throwable {

String group = “F:/group.rpg”;

ReportGroup reportgroup = ReportUtils.readReportGroup(group);     

ConnectDemo cd = new ConnectDemo();

    Connection conn = cd.getConnection();

    DataSourceConfig dsc = new DataSourceConfig(DBTypes.UNKNOWN,true, “GBK”, “GBK”, false);

    Context ctx = new Context();

    ctx.setConnection(“demo”, conn);

    ctx.setDataSourceConfig(“demo”, dsc);

ctx.setDefDataSourceName(“demo”);

    ExtCellSet.setLicenseFileName(“D:/安装文件/润乾安装/License4.0[64100621100826_640000]/技术应用中心专用授权Server2010-12-31V4.0Windows.lic”);

GroupEngine ge = new GroupEngine(reportgroup, ctx); 

IReport report1 = ge.get(0);

IReport report2 = ge.get(1);

CSReport csr1 = new CSReport(report1);

JFrame frame1 = new JFrame();

    frame1.getContentPane().add(csr1.getDisplayPane());

    frame1.setSize(1200, 800);

    frame1.setLocation(200, 100);

    frame1.setVisible(true);

    CSReport csr2 = new CSReport(report2);

JFrame frame2 = new JFrame();

    frame2.getContentPane().add(csr2.getDisplayPane()); 

    frame2.setSize(1200, 800);

    frame2.setLocation(200, 100);

    frame2.setVisible(true);

}

 

}

 

运行上面的代码后可以看到如下图的效果:

 

报表组中的两个报表项都被计算出来,并且在frame中展现了,这样在CS模式下计算报表组并展现的需求就实现了。

热门文章