J'ai ci-dessous un rapport similaire dans Jaspersoft iReport Designer, mais je n'arrive pas à comprendre comment additionner toutes les valeurs présentes dans la colonne verticale "Doctor Payment" pour obtenir un total de "1601"? La longueur de ces colonnes est variable (c'est-à-dire qu'aucune ligne ne varie en fonction de la taille de la base de données et de sa fréquence de mise à jour).
Y a-t-il une variable comme $V{COLUMN_COUNT}
(donne en fait pas de lignes, ici 5), ce qui donne la somme de toutes les valeurs dans une colonne? Si non, comment faire somme?
Doctor ID Doctor Payment
A1 123
B1 223
C2 234
D3 678
D1 343
Total 1601
Il est assez facile de résoudre votre tâche. Vous devez créer et utiliser une nouvelle variable pour additionner les valeurs de la colonne "Doctor Payment" .
Dans votre cas, la variable peut être déclarée comme ceci:
<variable name="total" class="Java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{payment}]]></variableExpression>
</variable>
L'exemple de travail.
Source de données CSV:
doctor_id, paiement A1,123 B1,223 C2,234 D3,678 D1,343
Le modèle:
<?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>
Le résultat sera:
Vous pouvez trouver beaucoup d'informations dans le JasperReports Ultimate Guide .
champs personnalisés iReports pour les colonnes (somme, moyenne, etc.)
Cliquez avec le bouton droit sur les variables et cliquez sur Créer une variable
Cliquez sur la nouvelle variable
une. Remarquez les propriétés sur la droite
Renommez la variable en conséquence
Remplacez le nom de la classe de valeur par le type de données correct
une. Vous pouvez rechercher en cliquant sur les 3 points
Sélectionnez le bon type de calcul
Changer l'expression
une. Cliquez sur la petite icône
b. Sélectionnez la colonne pour laquelle vous souhaitez effectuer le calcul
c. Cliquez sur terminer
Définir l'expression de la valeur initiale à 0
Définissez le type d'incrément sur aucun
Définissez le type de réinitialisation (généralement le rapport)
Faites glisser un nouveau champ de texte vers la scène (généralement dans le dernier pied de page ou le pied de colonne)
Sélectionnez la nouvelle variable
Cliquez sur terminer