我对JasperReports / iReport有一个非常烦人的错误。我最近从版本3.6.1升级到4.5.1并且它仍然存在。
我有一个报告,通过执行存储过程的jdbc DataSource
从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>
通过试验和错误并使用条件打印表达式,我发现double up与一个输出行相关联,因此如果我告诉Marketing_Preferences
在ID = 3
时不打印,那么这两个值都没有将打印。
首先,是否有人知道这可能发生的原因或原因?正如我所说,我已多次检查原始数据,并且找不到任何原因,运行存储过程根本不会产生上述数据。
其次,有没有人知道我可以解决它的方法?某种方式告诉iReport不要打印下一个值,如果它认为它是一个列表,或者限制为每个结果只有一行。我不能使用'打印重复值',因此不会打印有效的重复值。
任何帮助表示赞赏!!!
答案 0 :(得分:1)
我认为这是因为您有Marketing_Preferences
文字字段isPrintWhenDetailOverflows="true"
这是来自JRElement
isPrintWhenDetailOverflows() 如果将此设置为true,则如果波段不适合当前页面,则将在下一页上重新打印该元素。