Cómo sumar todos los valores en una columna en Jaspersoft iReport Designer?


Tengo a continuación un informe similar en Jaspersoft iReport Designer, pero no es capaz de averiguar cómo sumar todos los valores presentes en la columna vertical "Doctor Payment" para obtener un total de "1601"? La longitud de estas columnas es variable (es decir, no hay filas que varíen según el tamaño de la base de datos y su frecuencia de actualización ).

¿Hay alguna variable como $V{COLUMN_COUNT} (en realidad no da filas, aquí 5), ¿qué da la suma de todos los valores en una columna? Si no, ¿ cómo hacer sum?

Doctor ID   Doctor Payment
 A1             123
 B1             223
 C2             234
 D3             678
 D1             343
Total          1601
Author: informatik01, 2012-11-25

2 answers

Es bastante fácil resolver su tarea. Debe crear y utilizar una nueva variable para sumar valores de la columna "Doctor Payment".

En su caso la variable se puede declarar así:

<variable name="total" class="java.lang.Integer" calculation="Sum">
    <variableExpression><![CDATA[$F{payment}]]></variableExpression>
</variable>
  • el tipo de cálculo es Sum ;
  • el tipo de restablecimiento es Informe ;
  • el expresión Variable es $F{pago}, donde $F{pago} es el nombre de un campo contiene sum (Médico Pago).

El ejemplo de trabajo.

Fuente de datos CSV:

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

La plantilla:

<?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>

El resultado será:

Informe generado a través de la vista previa de iReport


Puedes encontrar mucha información en el Guía definitiva de JasperReports.

 57
Author: Alex K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-15 19:19:43

IReports Campos personalizados para columnas (suma, media, etc.)

  1. Haga clic con el botón derecho en Variables y haga clic en Crear variable

  2. Haga clic en la nueva variable

    A. Observe las propiedades a la derecha

  3. Cambie el nombre de la variable en consecuencia

  4. Cambie el Nombre de la clase de Valor al Tipo de datos correcto

    A. Puede buscar haciendo clic en los 3 puntos

  5. Seleccione el tipo correcto de cálculo

  6. Cambiar la expresión

    A. Haga clic en el pequeño icono

    B. Seleccione la columna para la que desea hacer el cálculo

    C. Haga clic en finalizar

  7. Establecer la Expresión del valor inicial en 0

  8. Establezca el tipo de incremento en none

  9. Deje el nombre de la Clase de Fábrica del Incrementador en blanco
  10. Establezca el tipo de reinicio (generalmente informe)

  11. Arrastre un nuevo Campo de Texto a la etapa (Generalmente en el Último Pie de Página, o Pie de columna)

  12. Haga doble clic en el nuevo Campo de texto
  13. Borrar la expresión"Campo de texto"
  14. Seleccione la nueva variable

  15. Haga clic en finalizar

  16. Coloque el nuevo texto en una posición deseable
 10
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-12 18:55:33