Comment incrémenter une variable avec la valeur d'une autre variable dans JasperReports?
J'ai besoin de faire un grand total de points que je suis de comptage dans un sous-rapport. Pour ce faire, je pense que j'ai besoin d'ajouter de la valeur de cette variable à une autre variable pour chaque itération, ou "incrémenter" par cette valeur. Le sous-état est appelé pour chaque groupe, et j'obtiens un total pour ce groupe. J'ai besoin d'ajouter les valeurs des variables, plutôt que de la base de données des colonnes/champs.
Je reçois un entier returnValue
de la subReport
, qui est lui-même le nombre de lignes dans le sous-rapport. Je veux obtenir le total général, depuis que subReport
est appelé plusieurs fois pour des résultats différents (chacun pour un GROUPE) de mon principal requête SQL. Je veux ajouter tous les résultats, mais je suis un null
valeur. J'ai essayé d'ajouter une opération à la subReport
comme un nouveau returnValue
et en choisissant Sum
que l'opération, mais qui a également permis null
.
<variable name="itemCount" class="java.lang.Integer" resetType="None"/>
<variable name="grandCount"
class="java.lang.Integer"
incrementType="Group"
incrementGroup="ITEM_BUNDLE">
<variableExpression><![CDATA[$V{itemCount}]]></variableExpression>
</variable>
...
<returnValue subreportVariable="countItems" toVariable="itemCount"/>
- Je pense que cette question doit être vraiment simple pour quelqu'un qui a de l'expérience avec Jasper... non?
Vous devez vous connecter pour publier un commentaire.
Ajouter un attribut
calculation="Sum"
àvariable name="grandCount"
ou passer
grandCount
de sous-rapport en tant que paramètreà sous-déclarer la variable countItems avec initialValue de paramètre grantCount
et retour
Je ne suis pas exactement shure comment l'écrire dans JRXML depuis que j'utilise iReport.
Dans iReport, j'ai créer une nouvelle Variable, avec une classe de type "Integer", et de calcul de type "Système"
Le type de calcul est important ici.
Dans l'expression d'une variable, vous aurez besoin de quelque chose comme $V{grandCount} = $V{grandCount} + $V{itemCount}
REMARQUE: JasperReports rendu de la bande par bande, de sorte que vous ne serez pas en mesure d'utiliser le grandCount variable dans la bande avant de la sous-bande.
Espère que je ne suis pas trop en retard
Vous pouvez essayer d'augmenter votre variable (j'ai nommé il totalSum) seulement quand le groupe (group) est égal à celui sur lequel le sous-rapport. Pour cela, vous auriez besoin d'un champ dans le rapport pour vous donner la bande courante (groupe).
Je ne suis pas sûr si cela fonctionne, je n'ai pas le contexte pour le tester. Mais vous pouvez aussi essayer un deuxième solution - avec trois variables. Par exemple, vous conservez la valeur renvoyée par le sous-état (disons returnValue) dans une variable et que vous utilisez un autre deux variables pour contenir la somme - un jusqu'à ce que le sous-état est appelé (disons partialSum) et le second pour stocker la somme entre la propriété returnValue et la partialSum. Appelons ça de la totalSum. Ensuite, vous avez quelque chose comme ça pour totalSum:
Pour partialSum, vous aurez quelque chose comme ceci:
J'espère que cela aide un peu. Il serait plus facile de faire de tous ces paramètres à partir d'iRport directement sur le rapport que vous souhaitez utiliser.