欢迎来到天天文库
浏览记录
ID:49651578
大小:29.50 KB
页数:5页
时间:2020-03-03
《birt报表动态切换数据源解决方案.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Birt报表动态切换数据源解决方案陈鸿 编写(一)通过library实现连接数据库管理1.理解library(库):可视化的报表开发环境。可以理解为,在使用创建报表的时候有很多的报表资源都会重复的使用,这样为了方便管理,可以将这些部分放在library文件里,这样其它报表只要是引用这些library文件即可。同时也方便了管理,例如当修改数据源的时候,只要修改包含数据源的library文件就可以了,而不必去一个个修改其它的报表文件。这些库可包含任何报表元素,比如样式、数据源、报表条目、脚本等等。2.创建library:增加到应用中用于运行报表,并可以把报表以各种形式导出,如E
2、xcel、HTML分页格式、PDF、RTF等。A.选新建LibraryB.可以看到新类似于创建报表文件的界面C.选择所需的驱动,并添加合法的数据源信息。D.创建数据源完成后,也可以继续创建数据集。3.使用libraryA.下面进行报表文件的制作,制作过程中会用到这个library文件。新建一个报表文件。在视图里选择LibraryExplorer,右击,添加刚才新建好的Library文件。添加完成后记得点上面的刷新。B.进行引用,首先确保DataExplorer和LibraryExplorer同时在界面里显示,之后便是将Library里的我们要用的数据拖拽到DataExplo
3、rer自己的报表Datasources中。便完成了引用数据源。如果Library中还有其它我们要引用的部分也是同样去操作。4.在java中修改birt报表library的数据源//修改.rptlibrary内的数据源信息publicvoidsetDataSource(StringrptdesignPath){DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();DocumentBuilderdb=null;InputStreamis=null;Stringdatasource=null;精选范本,供参考
4、!Documentdoc=null;StringEncodePsd=null;try{db=dbf.newDocumentBuilder();try{is=newFileInputStream(rptdesignPath);try{doc=db.parse(is);is.close();}catch(SAXExceptione){toPrint("SAXException");return;}catch(IOExceptione){toPrint("Can'treadfile["+rptdesignPath+"]");return;}}catch(FileNotFoundE
5、xceptione){toPrint("Can'tfoundfile["+rptdesignPath+"]");return;}}catch(ParserConfigurationExceptione){//TODOAuto-generatedcatchblock精选范本,供参考!toPrint("ParserConfigurationException");return;}//查找data-sources信息NodeListnodeList=doc.getElementsByTagName("data-sources");for(inti=0;i6、Length();i++){Elemente=(Element)nodeList.item(i);NodeListproperties=e.getChildNodes();if(properties!=null){//得到oda-data-source部分信息Nodeproperty=properties.item(1);for(Nodenode=property.getFirstChild();node!=null;node=node.getNextSibling()){//得到driver、url、username、password四项的值,并重新设置if(node.g7、etNodeName().equals("property")8、9、node.getNodeName().equals("encrypted-property")){Stringname=node.getAttributes().getNamedItem("name").getNodeValue();if(name.equals("odaDriverClass")){node.getFirstChild().setNodeValue(driver);}elseif(name.equals("odaURL")){nod
6、Length();i++){Elemente=(Element)nodeList.item(i);NodeListproperties=e.getChildNodes();if(properties!=null){//得到oda-data-source部分信息Nodeproperty=properties.item(1);for(Nodenode=property.getFirstChild();node!=null;node=node.getNextSibling()){//得到driver、url、username、password四项的值,并重新设置if(node.g
7、etNodeName().equals("property")
8、
9、node.getNodeName().equals("encrypted-property")){Stringname=node.getAttributes().getNamedItem("name").getNodeValue();if(name.equals("odaDriverClass")){node.getFirstChild().setNodeValue(driver);}elseif(name.equals("odaURL")){nod
此文档下载收益归作者所有