报表知识库
我要提问

动态改变数据源后填报问题

问题描述:通过api动态修改了填报模板的数据源,通过标签发布之后,在页面填报提交的时候报错:找不到数据源。

原因分析:经过分析发现通过api只是动态的修改了模板的数据源名称,并没有对应修改更新属性中的数据源,这样模板中的数据源跟更新属性的数据源是,不一致的,所以造成了在填报提交的时候报错:找不到数据源。

解决方法:对应动态修改的模板中的数据源,动态修改更新属性的数据源。

程序原理:通过填报属性取得更新属性中的对应关系,进而修改更新属性的数据源。

相关的例子如下:
ReportDefine rd = (ReportDefine)ReportUtils.read(raq);
INormalCell cell = rd.getCell(2, (short)1);

//取得填报属性
InputProperty ip = cell.getInputProperty();
ArrayList al = ip.getUpdateList();
UpdateProperty up = (UpdateProperty)al.get(0);
// 获取对应关系
Object relations = up.getRelation();
if(relations instanceof com.runqian.report4.usermodel.input.TableRelations){
TableRelations trs = (TableRelations)relations;
System.out.println(trs.getDataSourceName());

//设置更新属性数据源
trs.setDataSourceName(”northwind”);
up.setRelation(trs);
ArrayList ups = new ArrayList(1);
ups.add(up);
ip.setUpdateList(ups);
cell.setInputProperty(ip);