Как посчитать количество страниц, не перекрывающих полосу? - PullRequest
0 голосов
/ 04 апреля 2019

Есть ли вероятность того, что я не посчитал, что ни одна из страниц не будет динамически изменяться с помощью переменной?

1 Ответ

1 голос
/ 04 апреля 2019

Число страниц - это встроенная переменная $V{PAGE_NUMBER}, в текстовом поле с evaluationTime="Report" будет показано количество всех страниц в отчете, включая страницы заголовка и сводные страницы. Если эти страницы (заголовок / сводка) являются фиксированным числом, вы можете просто вычесть это из $V{PAGE_NUMBER}

Например, у вас есть полоса заголовка на 1 страницу и нет сводной полосы, число страниц, которые будут использоваться в деталях:

<textField evaluationTime="Report">
    <reportElement x="0" y="0" width="50" height="20" uuid="973faf10-8714-48de-ac22-b746b5f56b1a"/>
    <textElement textAlignment="Left" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[$V{PAGE_NUMBER}-1]]></textFieldExpression>
</textField>

Однако, если они не исправлены, следовательно, либо заголовок, либо сводная полоса будут динамически охватывать несколько страниц, решение - объявить переменную.

<variable name="detailBand_cnt" class="java.lang.Integer" incrementType="Page" calculation="Count">
    <variableExpression><![CDATA[1]]></variableExpression>
    <initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>

Начните с 0, увеличивайте (считайте) на каждой странице с 1, это будет работать, поскольку переменные оцениваются только при заполнении детального диапазона, оно не будет начинаться до или продолжаться после детального диапазона.

Полный пример

Запуск с пустым источником данных, например, 10 записей

<?xml version="1.0" encoding="UTF-8"?>
<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="CountDetailsPage" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isTitleNewPage="true" isSummaryNewPage="true" isSummaryWithPageHeaderAndFooter="true" uuid="1070117d-1c41-40e8-85cd-d04958412665">
    <queryString>
        <![CDATA[]]>
    </queryString>
    <variable name="detailBand_cnt" class="java.lang.Integer" incrementType="Page" calculation="Count">
        <variableExpression><![CDATA[1]]></variableExpression>
        <initialValueExpression><![CDATA[0]]></initialValueExpression>
    </variable>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20" uuid="d5206823-c0fe-416a-aa9f-fdc6dc584f2b"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Title page 1]]></text>
            </staticText>
            <break>
                <reportElement x="0" y="38" width="100" height="1" uuid="465c7a1c-d59f-486d-8730-2e1a853f0b12"/>
            </break>
            <staticText>
                <reportElement x="0" y="50" width="100" height="20" uuid="7c726918-e7d7-4a47-a5f4-a87561ef08fb"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Title page 2]]></text>
            </staticText>
        </band>
    </title>
    <detail>
        <band height="125" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="550" height="20" uuid="ae3566d9-c2a2-41e5-99fa-cd184f1b1eee"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[On detail]]></text>
            </staticText>
        </band>
    </detail>
    <pageFooter>
        <band height="54" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="70" height="20" uuid="38b0a124-e61b-46cb-8b4e-60e2f4ccd066"/>
                <textElement textAlignment="Left" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA["Detail Page " + $V{detailBand_cnt}]]></textFieldExpression>
            </textField>
            <textField evaluationTime="Report">
                <reportElement x="70" y="0" width="50" height="20" uuid="c5f945f0-895d-4481-8895-6f945a070450"/>
                <textElement textAlignment="Left" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[" of " + $V{detailBand_cnt}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="407" y="0" width="95" height="20" uuid="98da264d-689f-4382-99b2-f304e0202555"/>
                <textElement textAlignment="Right" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA["Totale Page " + $V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
            <textField evaluationTime="Report">
                <reportElement x="502" y="0" width="50" height="20" uuid="973faf10-8714-48de-ac22-b746b5f56b1a"/>
                <textElement textAlignment="Left" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[" of " + $V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
        </band>
    </pageFooter>
    <summary>
        <band height="100" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20" uuid="ac518697-d616-47a9-a029-dfbb0d5f7ea3"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Summary Page1]]></text>
            </staticText>
            <break>
                <reportElement x="0" y="30" width="100" height="1" uuid="6f92ae5a-2786-407f-b2bf-62c32287ae88"/>
            </break>
            <staticText>
                <reportElement x="0" y="40" width="100" height="20" uuid="0e61769d-5bd0-4224-b905-425e90e0d87b"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Summary Page 2]]></text>
            </staticText>
            <break>
                <reportElement x="0" y="60" width="100" height="1" uuid="6f92ae5a-2786-407f-b2bf-62c32287ae88"/>
            </break>
            <staticText>
                <reportElement x="0" y="70" width="100" height="20" uuid="0e61769d-5bd0-4224-b905-425e90e0d87b"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Summary Page 3]]></text>
            </staticText>
        </band>
    </summary>
</jasperReport>

Результат (стр. 3 из 7)

result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...