JasperReports/iReport 有一个非常烦人的错误。我最近从 3.6.1 版本升级到 4.5.1 版本,它仍然存在。
DataSource
我有一份报告,它通过执行存储过程的 jdbc 从 MS SQL 服务器数据库中提取一些信息。问题是我得到的随机数据行只有一个值,如下所示:
ID Name Marketing_Preferences
1 John Y
2 James N
3 Daniel Y
Y
4 Tim N
我一遍又一遍地查看原始数据,执行此操作的行没有什么不同或特别之处。
相关的 iReport xml 定义为:
<field name="Marketing_Preferences" class="java.lang.String"/>
<staticText>
<reportElement isPrintRepeatedValues="false" x="504" y="41" width="101" height="15" isPrintWhenDetailOverflows="true">
<printWhenExpression><![CDATA[new Boolean( $V{PAGE_NUMBER}.intValue() == 1 )]]></printWhenExpression>
</reportElement>
<textElement>
<font size="9"/>
</textElement>
<text><![CDATA[Marketing_Preferences]]></text>
</staticText>
<textField isBlankWhenNull="true">
<reportElement x="504" y="3" width="101" height="15" isPrintWhenDetailOverflows="true"/>
<textElement>
<font size="8"/>
</textElement>
<textFieldExpression><![CDATA[$F{Marketing_Preferences}]]></textFieldExpression>
</textField>
通过反复试验并使用条件打印表达式,我发现双倍向上绑定到一个输出行,所以如果我告诉Marketing_Preferences
不打印,ID = 3
那么两个值都不会打印。
首先,有谁知道这会如何发生或为什么会发生?正如我所说,我已经多次检查原始数据,找不到任何原因,运行存储过程根本不会产生上述情况。
其次,有谁知道我可以解决它的方法吗?如果 iReport 认为它是一个列表,或者限制为每个结果仅一行,则可以通过某种方式告诉 iReport 不要打印下一个值。我不能使用“打印重复值”,因为这不会打印有效的重复值。
任何帮助表示赞赏!