Расчет номера страницы iReports

У меня есть приложение, которое генерирует несколько частей отчета, а затем объединяет их вместе для создания PDF-документа. Мы хотели бы сгенерировать соответствующие номера страниц для каждой части. Я надеялся передать параметр PAGE_OFFSET в каждую часть и вычислить новый номер страницы, используя PAGE_NUMBER + PAGE_OFFSET. Это возможно? До сих пор все, что я пробовал, генерировало ошибки приведения типов или неверные вычисления.


person user2410321    schedule 22.05.2013    source источник


Ответы (4)


Если я правильно понимаю, вы хотите передать это смещение страницы в iReport?

Создайте новый параметр для вашего смещения: $P{offset} класса параметров java.lang.Integer. Затем создайте новую переменную класса java.lang.Integer. Задайте для выражения переменной значение $V{PAGE_NUMBER}+$P{offset}, для вычисления — ничего, для типа сброса — Page, а для типа приращения — None.

person Lisa    schedule 22.05.2013
comment
Я пробовал это изначально, но это не сработало. Я использую версию 3.5.1, поэтому не уверен, что именно поэтому. Он жалуется на то, что знак «+» не является допустимым вариантом. Мне удалось заставить его работать со следующим выражением: new java.lang.Integer($P{PAGE_OFFSET}.intValue() + $V{PAGE_NUMBER}.intValue()) - person user2410321; 22.05.2013

попробуйте следующий шаг

1.) создать новую переменную mypagenumber; типа целое число, тип сброса группа, страница типа инкремента, тип расчета количество; выражение переменной $V{mypagenumber}, начальное значение новое целое (0).

2.) поместите в свой отчет строку типа текстового поля, страницу времени оценки, выражение текстового поля String.valueOf($V{mypagenumber}), чтобы указать фактическую страницу в группе или группу времени оценки, и выберите свою группу, чтобы указать страницы в группе.

person user3252569    schedule 30.01.2014

Если вы ищете "Страница 1 из 3". Посмотрите значение 'evaluationTime'. Вы должны написать примерно так:

<textField evaluationTime="Page">
    <reportElement x="328" y="0" width="154" height="20"/>
    <textElement textAlignment="Right" verticalAlignment="Middle">
        <font fontName="Arial" size="9"/>
    </textElement>
    <textFieldExpression class="java.lang.String"><![CDATA["Page"+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
    <reportElement x="485" y="0" width="63" height="20"/>
    <textElement verticalAlignment="Middle">
        <font fontName="Arial" size="9"/>
    </textElement>
    <textFieldExpression class="java.lang.String"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
person Cristina Peña    schedule 28.10.2014

Исправленная версия кода Кристины для меня (я использую iReport 3.7.2):

<pageFooter>
    <band height="20">
        <textField evaluationTime="Page">
            <reportElement x="766" y="0" width="154" height="20"/>
            <textElement textAlignment="Right" verticalAlignment="Middle">
                <font fontName="SansSerif" size="9"/>
            </textElement>
            <textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}.toString() + " of "]]></textFieldExpression>
        </textField>
        <textField evaluationTime="Report">
            <reportElement x="924" y="0" width="63" height="20"/>
            <textElement verticalAlignment="Middle">
                <font fontName="SansSerif" size="9"/>
            </textElement>
            <textFieldExpression class="java.lang.String"><![CDATA[$V{PAGE_NUMBER}.toString()]]></textFieldExpression>
        </textField>
    </band>
</pageFooter>
person BlondCode    schedule 10.06.2016