增加交叉表数据集时出错

mon*_*ksy 10 grouping jasper-reports crosstab

我有一个由对象{groupName,rowName,colName,value}组成的数据源.我正在尝试将字段row,col,val放在交叉表中,由组分隔[该组具有标题].数据对象的集合被存储为主数据源.

当我尝试这样做时,我得到了错误:

net.sf.jasperreports.engine.JRRuntimeException: Error incrementing crosstab dataset
    net.sf.jasperreports.engine.fill.JRFillCrosstab$JRFillCrosstabDataset.customIncrement(JRFillCrosstab.java:762)
    net.sf.jasperreports.engine.fill.JRFillElementDataset.increment(JRFillElementDataset.java:193)
    net.sf.jasperreports.engine.fill.JRCalculator.calculateVariables(JRCalculator.java:162)
    net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:747)
Run Code Online (Sandbox Code Playgroud)

有没有人建议为什么会发生这种情况或如何解决?

war*_*ren 20

我发现以下内容可能有所帮助:*

什么"交叉表数据已被处理"异常意味着什么?

如果在交叉表已经渲染后将更多数据添加到交叉表数据集,则抛出此异常.
当交叉表元素链接到报表的主数据集(不使用子数据集运行)并且交叉表数据集的resetType属性与交叉表呈现的位置不匹配时,通常会发生这种情况.
交叉表是显示聚合数据的特殊组件.当它们链接到报表的主数据集时,您根本无法将它们放在详细信息部分中,因为没有数据要从单个记录聚合.
此类交叉表只能驻留在组页脚或报表的摘要部分,并具有相应的resetType值,以便在每次呈现数据集后对其数据集进行初始化.
如果您仍然认为需要为主文档中的每个细节渲染一个交叉表,那么几乎可以肯定,此交叉表应链接到子数据集而不是报表的主数据集.

您必须尝试将所有数据放在详细信息部分中,这将不允许交叉表组件聚合所有数据.

*jasperforge.org

  • 谢谢你解释这个问题.我发现的另一个解决方法是将交叉表数据集的"重置类型"更改为"无".然后,您仍然可以使用主数据集并将交叉表放在详细信息区域中. (3认同)