使用BIRT设计器3.7.1,可以很容易地为XML文件数据源定义报告;但是,输入文件名最初是作为常量值写入.rptdesign文件的。一开始不错,但在现实生活中毫无用处。我想要的是通过genReport.bat脚本启动BIRT ReportEngine,指定XML数据源文件的名称作为参数。这应该是微不足道的,但这是非常困难的......
我发现的是:不是在报告定义中将XML数据源文件定义为常量,而是可以使用params [“datasource”]。value,它将在运行时由参数值替换。此外,在BIRT Designer中,您可以定义报告参数(数据源)并为其指定默认值,例如“file:// d:/sample.xml”。
然而,它不起作用。这是我在Designer中预览尝试的结果:
Cannot open the connection for the driver: org.eclipse.datatools.enablement.oda.xml.
org.eclipse.datatools.connectivity.oda.OdaException: The xml source file cannot be found or the URL is malformed.
ReportEngine,以'genReport.bat -p'开头,datasource = file:// d:/sample.xml“xx.rptdesign”几乎相同。 当然,我确保XML文件存在,并尝试了不同的文件URL拼写。那么,怎么了?
答案 0 :(得分:6)
我发现的是:不是在报告定义中将XML数据源文件定义为常量,而是可以使用params [“datasource”]。value,它将在运行时由参数值替换。
不,它不会 - 至少,如果您在设计时将&XML Data Source File
的值指定为params["datasource"].value
(而不是有效的XML文件路径),那么在尝试时您将收到错误运行报告。这是因为它尝试使用文字字符串params["datasource"].value
作为文件路径,而不是params["datasource"].value
的值。
相反,您需要使用事件处理程序脚本 - 特别是beforeOpen
脚本。
要做到这一点:
beforeOpen
脚本。 this.setExtensionProperty("FILELIST", params["datasource"].value);
如果您现在运行报告,您会发现参数datasource
的值用于XML文件位置。
您可以在BIRT Exchange上找到有关参数驱动的XML数据源的更多信息。
答案 1 :(得分:0)