Подтвердить что ты не робот

Как суммировать все значения в столбце в Jaspersoft iReport Designer?

У меня есть аналогичный отчет в Jaspersoft iReport Designer, но не могу понять, как суммировать все значения, присутствующие в вертикальном столбце "Оплата врача", чтобы получить в общей сложности "1601"? Длина этих столбцов является переменной (т.е. Количество строк не зависит от размера базы данных и частоты ее обновления).

Есть ли какая-либо переменная типа $V{COLUMN_COUNT} (фактически не дает строк, здесь 5), которая дает сумму всех значений в столбце? Если нет, как сделать сумма?

Doctor ID   Doctor Payment
 A1             123
 B1             223
 C2             234
 D3             678
 D1             343
Total          1601
4b9b3361

Ответ 1

Это легко решить вашу задачу. Вы должны создать и использовать новую переменную для суммирования значений столбца "Оплата врача" .

В вашем случае переменная может быть объявлена ​​следующим образом:

<variable name="total" class="java.lang.Integer" calculation="Sum">
    <variableExpression><![CDATA[$F{payment}]]></variableExpression>
</variable>
  • Тип расчета Сумма;
  • Тип Reset Отчет;
  • выражение переменной $F {платеж}, где $F {платеж} - это имя поля содержит сумму (оплата врача).

Рабочий пример.

Источник данных CSV:

doctor_id,payment
A1,123
B1,223
C2,234
D3,678
D1,343

Шаблон:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ...>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="doctor_id" class="java.lang.String"/>
    <field name="payment" class="java.lang.Integer"/>
    <variable name="total" class="java.lang.Integer" calculation="Sum">
        <variableExpression><![CDATA[$F{payment}]]></variableExpression>
    </variable>
    <columnHeader>
        <band height="20" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20"/>
                <box leftPadding="10"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="10" isBold="true" isItalic="true"/>
                </textElement>
                <text><![CDATA[Doctor ID]]></text>
            </staticText>
            <staticText>
                <reportElement x="100" y="0" width="100" height="20"/>
                <box leftPadding="10"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="10" isBold="true" isItalic="true"/>
                </textElement>
                <text><![CDATA[Doctor Payment]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20"/>
                <box leftPadding="10"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{doctor_id}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <box leftPadding="10"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{payment}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <summary>
        <band height="20">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20"/>
                <box leftPadding="10"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Total]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <box leftPadding="10"/>
                <textElement>
                    <font isBold="true" isItalic="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$V{total}]]></textFieldExpression>
            </textField>
        </band>
    </summary>
</jasperReport>

Результат будет:

Generated report via iReport's preview


Вы можете найти много информации в JasperReports Ultimate Guide.

Ответ 2

iReports Пользовательские поля для столбцов (сумма, средняя и т.д.)

  • Щелкните правой кнопкой мыши на переменных и выберите Создать переменную

  • Нажмите на новую переменную

    а. Обратите внимание на свойства справа

  • Переименуйте соответствующую переменную

  • Измените имя класса значений на правильный тип данных

    а. Вы можете выполнить поиск, щелкнув 3 точки

  • Выберите правильный тип расчета

  • Измените выражение

    а. Нажмите маленькую иконку

    б. Выберите столбец, который вы хотите выполнить для

    с. Нажмите "Готово"

  • Установите выражение исходного значения на 0

  • Задайте тип приращения none

  • Оставить инкремент Factory Имя класса пустое
  • Задайте Reset Тип (обычно отчет)

  • Перетащите новое текстовое поле на сцену (обычно в нижнем колонтитуле последней страницы или нижнем колонтитуле столбца)

  • Дважды щелкните новое текстовое поле
  • Удалить выражение "Текстовое поле"
  • Выберите новую переменную

  • Нажмите "Готово"

  • Поместите новый текст в желаемую позицию 