我使用 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>
最佳答案
为了避免这种情况,最好为细节区域定义一个printWhenExpression
。
在 iReport 中:单击报告检查器中的详细信息区域,在属性面板中将 printWhenExpression
修改为 $F{StdntCd} != null
:这只会显示这样做的学生具有 null
以外的代码。
如果您使用REPORT_COUNT
变量,则需要添加自定义变量:
- 类型:
java.lang.Integer
- 计算:
总和
- 表达式:
$F{StdntCd} == null ? 0:1
- 初始值:
0
假设如果提供了有效数据,StdntCd
字段永远不会为 null
,这将使您始终获得正确的输出。
如果您的报表使用与 groovy 不同的语言运行,您可能需要调整表达式。
关于xml - 使用 XML 数据源而不是空白页时没有数据时显示 Jasper 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714671/