1

我使用Jasper作为报表引擎(使用iReport -4.0.0)
我的数据源是XML 文件数据源,并在填写报表时使用XPath表达式
例如
示例数据

<StudentList>
<Student>   
    <StdntCd>cd11</StdntCd>
    <StdntNm>ee11</StdntNm>
    <Schl>Schl11</Schl>
    <Cty>Cty11</Cty>
</Student>
<Student>   
    <StdntCd>cd22</StdntCd>
    <StdntNm>ee22</StdntNm>
    <Schl>Schl22</Schl>
    <Cty>Cty22</Cty>
</Student>
</StudentList>

我的 XPath 表达式是

/StudentList/Student

问题发生在没有数据时

<StudentList>

</StudentList>  

我需要显示报告的所有部分而不显示详细信息(因为没有数据)
虽然我将“当没有数据”属性设置为“所有部分,没有详细信息”
但仍然不起作用
注意
没有数据等同于以前的 XML不喜欢那

<StudentList>
 <Student></Student>
</StudentList>
4

1 回答 1

3

为了避免这种情况,最好的方法是printWhenExpression为细节带定义一个。

在 iReport 中:单击详细信息带上的报告检查器,在属性面板中修改printWhenExpression$F{StdntCd} != null:这将仅显示具有除null.

如果您使用该REPORT_COUNT变量,则需要添加一个自定义变量:

  • 类型:java.lang.Integer
  • 计算:Sum
  • 表达:$F{StdntCd} == null ? 0 : 1
  • 初始值:0

这将允许您始终正确输出,假设如果提供了有效数据,则该字段StdntCd永远不会出现。null

如果您的报告使用与 groovy 不同的语言运行,您可能需要调整表达式。

于 2013-02-05T19:14:39.700 回答