【问题标题】:Infinite loop in crosstab subreport with long text带有长文本的交叉表子报表中的无限循环
【发布时间】:2012-03-05 23:30:10
【问题描述】:

好的,这是我的设置。

包含子报表的主报表。 子报表是交叉表报表。 交叉表中的一个字段可能很长,但必须这样。 当长字段不长时,报表呈现良好。 如果它包含大量文本,jasper 会爆出抱怨无限循环超过 3 页。

我觉得这是一个错误,但我想知道我是否应该以不同的方式查看此报告以避免此问题。 是否有其他控件可以用来显示动态列,例如交叉表,并且还支持更长的文本?

谢谢,如果有关我的报告的任何其他信息有帮助,请随时询问,我会尽我所能。

错误信息是:

错误 JRFillSubreport - 填充 1:异常 net.sf.jasperreports.engine.JRRuntimeException:Crosstab 连续 3 页没有打印任何内容,可能是无限循环

【问题讨论】:

    标签: jasper-reports crosstab subreport


    【解决方案1】:

    我在使用交叉表报告时遇到了同样的问题,因为我的一些单元格是 1.5K+ 字符...我概述了我的做法here

    基本上我使用的是子数据集而不是子报表。对我来说最重要的是我在“crosstabCell”和“reportElement”元素上设置的高度和宽度值。

    我发现我必须稍微修改一下 XML 才能让它运行,但最终一切正常。

    希望对你有帮助:)

    【讨论】:

    • 嗯,您解决方案的哪一部分解决了大文本无限循环的问题?我使用的是标准 jdbc 数据源而不是 xml 文件,所以我认为我不需要该解释中的所有内容。
    • 影响无限循环的事情: 1 - 支持超出主宽度的溢出,其中相对位置错误配置为溢出。 2 - 单元格宽度。 “对我来说最重要的是我在“crosstabCell”和“reportElement”元素上设置的高度和宽度值这句话暗示了这一点;)我发现每个单元格的宽度为“100”。在 70:无限循环... 在 200:无限循环... 在 100:没有无限循环。为什么我不知道,可能是一个错误。至于交叉表的子报告,我总是遇到问题,所以我坚持使用子数据集。
    • 谢谢!我会看看是否可以在不限制文本输入的情况下对其进行调整。 :P
    • 您不需要将文本输入限制为单元格的宽度。您的数据将包装。这只是意味着你的细胞会又高又瘦;)
    • 好吧,这就是导致无限循环的原因,单行垂直延伸超出了单页。即使该行从新页面开始。
    【解决方案2】:

    在使用 Jasper 报告 - 交叉表时,我在生产系统上遇到过这个“无限循环”问题。我不知道它发生的确切原因,因为没有记录错误/异常。唯一的提示是,它只发生在少数情况下,交叉表列数据很长并且必须溢出到下一页。我意识到带有“溢出溢出”的元素会混淆 Jasper 引擎并进入“无限循环”。可以理解,Crosstab 不能满足您的所有要求,因为某些“拉伸”功能是不合理的。至于我的报表设计,我已经定制了一些交叉表,通过添加额外的元素(占用额外的空间)并让一些元素具有“溢出溢出”功能。

    报告此问题后,我使用交叉表创建了一个简单的报告,没有任何自定义或拉伸功能,并使用各种测试用例对其进行了测试......并且它有效。已经有一段时间了,此更改后未报告此“无限循环”问题。

    【讨论】:

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