公司项目需要,要求接入水晶报表,但是本人之前完全没有接触过水晶报表,结果为了完成任务,只能硬着头上了。期间遇到许多麻烦,总算是将水晶报表接入到了freemarker项目了,结果现在被水晶报表数据源的动态设定给难住了。现在针对这个问题做下总结。
一、项目要求
1. 水晶报表的调用需要用pull模式,即系统只提供数据库连接信息和查询参数,其他的工作由水晶报表本身完成,如查询sql,数据库连接
2. 系统保证各个数据库的查询表结构一致,系统需要支持数据源的动态化,根据提供的数据库连接信息进行更改。
二、问题情况
为了完成要求,到网上查询资料,借书翻阅,发现水晶报表链接数据库的方法主要就介绍两种:
1. 用rpt本身内含的数据源链接,代码只传入用户名和密码;
2. 采用push模式,也就是由系统链接数据库后查询出数据再赋值给报表展示;
第一种肯定是没有满足要求,因为这种方式的数据库链接已经限定为了rpt设置内容,如果要更换数据源,就需要重新设置rpt再上传,在实际的使用过程中肯定不满足。
第二种方法虽然可以实现动态的更改数据源,但是这种方式水晶报表的应用就比较简单了,基本上只当显示控件使用,而且跟项目要求也有出入,只能在最终没有其他解决方法的时候才考虑。
三、解决方案
四、参考文献地址
http://my.oschina.net/l1z2g9/blog/157279