【问题标题】:Jasper Reports: how to dynamically adress a report unit as source for subreportsJasper Reports:如何将报表单元动态寻址为子报表的源
【发布时间】:2019-03-06 12:58:02
【问题描述】:

我有一份报告需要提供动态自定义标题。

为此,我使用了一个 subreport 元素,该元素使用 header-type 参数链接到正确的标题子报表。

这在 Jaspersoft Studio 中运行良好,但我无法让它在服务器本身上运行。

我已经在我的开发工作区中复制了服务器上的文件夹结构,以便两个系统上的路径相同,但没有运气。

我想我做错了什么。

我已将我的页眉子报表作为单独的报表单元上传到页眉文件夹中。

然后,我上传了主报告,该报告应根据参数使用其中一个标题。

无论我如何更改子报表表达式,主报表都无法正常工作,而我可以完美地自行访问标题。

这是我已经尝试过的一些东西,如果它们只在开发工作室中工作的话:

标准路径:"/reports/aaaaa/headers/"+$P{P_HEADER}+".jasper"

repo 路径:"repo:/reports/SecondaryDB/Headers/"+$P{P_HEADER}+".jasper"

尝试省略 +".jasper" 因为我看不到实际的 jasper 文件,只是一个报告单元。

尝试将 +".jasper" 替换为 +"/Main.jasper" 或 "/Main.jrxml" 尝试使用单反斜杠或双反斜杠代替正斜杠
尝试使用完整的外部 url 到标题报告

这些似乎都不起作用。

我没有尝试过的东西,包括主报告中的标题。

这是因为我需要将标题维护为一个全局可用的实例,而不是在每个报告中都编译它们的副本。

有人可以举个例子吗?

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    感谢 tibco 董事会的人们,我得到了正确方向的提示。

    显然,我的错误是将子报表作为 Report-Unit 上传。

    现在我使用带有普通 jrxmls 的普通文件夹,并且子报表表达式中没有文件扩展名 - 现在可以使用。

    但让我很困惑的另一件事是,不知何故,我的子报表表达式在上传时被改变了。

    我的本​​地开发文件已设置为“repo:/reports/SecondaryDB/Headers/”+$P{P_HEADER}”

    升级后的文件改为“repo:A_SPECIFIC_HEADER”并去掉了路径和参数,我猜 JasperStudio 是隐式做到的。

    我必须打开我的报表单元并手动更改服务器上的 main.jrxml 以将子报表表达式设置回它们应有的状态。

    直到我发现了这一点,我终于得到了一些结果。

    后续问题:

    任何人都知道一种方法,以便我可以在本地开发和生产服务器上使用相同的配置?

    在上传更改时手动更改子报表表达式并不是推出报表的优雅方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多