gpt4 book ai didi

java - JasperReports 神秘的收获值

转载 作者:行者123 更新时间:2023-12-01 15:21:32 35 4
gpt4 key购买 nike

我在使用 JasperReports/iReport 时遇到了一个极其烦人的错误。我最近从版本 3.6.1 升级到了 4.5.1,它仍然存在。

我有一个报告,它通过执行存储过程的 jdbc DataSource 从 MS SQL Server 数据库中提取一些信息。问题是我得到的随机数据行只有一个值,如下所示:

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_PreferencesID = 3< 时不打印 那么这两个值都不会打印。

首先,有谁知道这种情况如何或为何发生?正如我所说,我多次检查原始数据,但找不到任何发生的原因,运行存储过程根本不会产生上述结果。

其次,有人知道我可以解决这个问题的方法吗?如果 iReport 认为它是一个列表,则可以通过某种方式告诉它不要打印下一个值,或者限制每个结果仅一行。我无法使用“打印重复值”,因为这不会打印有效的重复值。

任何帮助表示赞赏!

最佳答案

我认为这是因为您有 Marketing_Preferences 文本字段isPrintWhenDetailOverflows="true"

这里是来自JRElement的javadoc

isPrintWhenDetailOverflows() If this is set to true, the element will be reprinted on the next page if the band does not fit in the current page.

关于java - JasperReports 神秘的收获值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843018/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com