首页 > 解决方案 > 除了最后一次之外,如何详细打印每次迭代的文本?

问题描述

我有一个迭代名称的子报告。我想在每个循环上打印一个文本“或”,除了最后一个。现在我正在为这个问题做一个建议的解决方案,但它仍然在最后一次迭代中打印。

这是我现在拥有的示例:

当前的

子报表的末尾还有一个额外的

我现在拥有的当前子报告源代码:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.5.1.final using JasperReports Library version 6.5.1  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="paiwi-signatories-name-only-subreport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="8f474d5a-0cca-4c5f-807e-71af8848276f">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="signatoryJSON"/>
    <queryString language="json">
        <![CDATA[signatoryNames]]>
    </queryString>
    <field name="name" class="java.lang.String">
        <fieldDescription><![CDATA[name]]></fieldDescription>
    </field>
    <field name="address" class="java.lang.String"/>
    <variable name="signatoryCurrentCount" class="java.lang.Integer" resetType="None">
        <variableExpression><![CDATA[$V{nameGroup_COUNT}]]></variableExpression>
    </variable>
    <group name="nameGroup">
        <groupExpression><![CDATA[$F{name}]]></groupExpression>
    </group>
    <detail>
        <band height="36" splitType="Stretch">
            <textField isBlankWhenNull="true">
                <reportElement positionType="Float" x="-20" y="-20" width="260" height="20" uuid="220a59b9-595b-4149-badd-f4a1ecff36c5"/>
                <textElement>
                    <font fontName="Times New Roman" size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
            <textField evaluationTime="Auto" isBlankWhenNull="true">
                <reportElement positionType="Float" x="0" y="0" width="100" height="20" isRemoveLineWhenBlank="true" uuid="afda4fcc-78fc-46f9-8c5c-2e0c4f04dfa5"/>
                <textFieldExpression><![CDATA[$V{signatoryCurrentCount}.equals($V{nameGroup_COUNT}) ? "or" : ""]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

如何避免在最后一条记录之后打印最后一个 textField?

标签: jasper-reports

解决方案


你可以尝试一个简单的事情,把2个变量放在你的报表中,我想你已经知道你的报表将包含多少页,然后将printWhenExpression语句更改为你的页面的值,例如你的报表包含20页,然后在您的变量将打印条件更改PAGE_NUMBER==20PAGE_NUMBER < 20另一个。祝你好运。


推荐阅读