快逸报表 context方式发布报表方法介绍
快逸报表提供了tag标签供程序员发布报表,减轻代码编写的工作量。通过tag发布报表,最简单的情况下只需要指定报表模板名。为了满足不同层次的需要,润乾tag还支持definebean的方式发布报表、支持传递context对象,便于用户自定义数据源、自定义参数和宏等。
Context对象方式发布报表一般用在发布报表之前更改默认的数据源,下面介绍一下如何用context对象方式发布报表。
方法:首先定义context对象,然后得到web服务器定义的jndi连接池,再设置context的默认数据源,再设置context的数据库连接工厂,最后把context放到request中。
代码如下
//定义Context对象
com.runqian.report4.usermodel.Context context = new Context();
//获得连接
JNDIConnectionFactory jndiConn = new JNDIConnectionFactory(”java:/comp/env/spsDB”);
//设置默认数据源
context.setDefDataSourceName(”spsDB”);
//设数据库连接工厂
context.setConnectionFactory(”spsDB”,jndiConn);
request.setAttribute( “myContext”, context );
发布报表的标签
<report:html name=”report1″ reportFileName=”test1.raq”
funcBarLocation=”top”
needPageMark=”yes”
generateParamForm=”no”
exceptionPage=”/reportJsp/myError2.jsp”
contextName=”myContext”
/>
上面代码适用于统计报表,如果是填报表,就需要修改一下context定义的方法
//创建上下文对象
com.runqian.report4.usermodel.Context context = Context.getInitCtx();
//得到web服务器中的数据源连接池
JNDIConnectionFactory jndiConn = new JNDIConnectionFactory(”java:/comp/env/spsDB “);
//定义数据源配置类
DataSourceConfig sourceConfig = new DataSourceConfig(DBTypes.SQLSVR,false,”GBK”,”GBK”,false);
//设置默认数据源,此数据源要和报表数据集中数据源名字相同
context.setDefDataSourceName(”spsDB “);
context.setDataSourceConfig(”spsDB “,sourceConfig);
context.setConnectionFactory(”spsDB “,jndiConn);
以上java代码在报表系统中运行一次,就会把当前系统中的默认数据源设置为spsDB,这段代码运行后,发布报表时标签中不需要设置contextName属性了。
总结:快逸报表提供了发布报表的多种方式,以此支持客户需要的多样性。