实际应用中通过程序动态修改报表模板的情况很常见,其中动态修改数据源SQL就是一种典型场景。常见于系统中有一些结构相同而数据源不同的报表,为减少报表开发工作量,只开发一套报表模板,使用时通过程序动态修改数据源来满足实际需要。
下面通过一个使用JAVA程序修改集算报表数据源SQL的例子说明使用过程。
编辑报表模板:
由于不同数据源的字段不同,因此这里使用动态表达式ds1.fname()获取字段名,ds1.field()获取字段值。此外,第一行和第一列为辅助行列,设置其隐藏。
编写代码:
1.读入报表
String reportPath = request.getRealPath("/reportFiles/demo.rpx");
ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);
2.更改报表数据源
DataSetMetaData dsmd=new DataSetMetaData(); //构造数据集元数据
SQLDataSetConfig sdc=new SQLDataSetConfig(); //构造数据集定义
sdc.setName("ds1"); //设置数据集名
Stringsql = "";
//根据不同参数,为报表设置不同数据源SQL,实际使用中可以从配置文件中读取
switch(Integer.parseInt(type)){
case 1:
sql="select * from EMPLOYEE";
break;
case 2:
sql="select * from PERFORMANCE";
break;
default:sql="select * from CUSTOMER";
}
sdc.setSQL(sql); //设置 sql语句