【问题标题】:BIRT: Specifying XML Datasource file as parameter does not workBIRT:将 XML 数据源文件指定为参数不起作用
【发布时间】:2012-02-06 16:58:04
【问题描述】:

使用 BIRT Designer 3.7.1,很容易为 XML 文件数据源定义报告;但是,输入文件名最初作为常量值写入 .rptdesign 文件。开头很好,但在现实生活中毫无用处。我想要的是通过 genReport.bat 脚本启动 BIRT ReportEngine,指定 XML 数据源文件的名称作为参数。这应该是微不足道的,但是却出奇的困难……

我发现是这样的:您可以使用 params["datasource"].value 代替在报表定义中将 XML 数据源文件定义为常量,它将在运行时替换为参数值。此外,在 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 的不同拼写。那么,怎么了?

【问题讨论】:

    标签: birt


    【解决方案1】:

    我发现是这样的:您可以使用 params["datasource"].value 代替在报表定义中将 XML 数据源文件定义为常量,它将在运行时替换为参数值。

    不,它不会 - 至少,如果您在设计时将 &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 数据源的更多信息。

    【讨论】:

    • 谢谢 - 现在可以使用了。我可以为初学者(比如我自己)补充一下,您还必须添加报表参数的定义(在设计器的“报表参数”部分中)。
    【解决方案2】:

    由于这是一个旧线程但仍然有用,我将添加一些信息:

    • 在编辑数据源中,添加一些 url 以获取示例数据以创建数据集
    • 创建您的数据集
    • 然后如图删除url

    添加一些脚本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      相关资源
      最近更新 更多