IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

iReport Discussion :

Somme d'un champ pour un groupe


Sujet :

iReport

  1. #1
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut Somme d'un champ pour un groupe
    Bonjour,

    je découvre iReport 3.7.0 et j'ai de la peine à comprendre comment faire la somme d'un champ pour un groupe sous forme de variable.

    J'ai le query suivant (base de données d'exemple de iReport 3.7.0) :



    et le rapport ci-dessous avec la variable "Total" que j'essaie de rapporter au groupe SHIPCOUNTRY :



    Comment puis-je setter les propriétés de la variable ci-dessous pour obtenir la somme du champ $F{Total freight} ?



    J'ai essayé plusieurs choses, mais rien n'a fonctionné.

    Je pense qu'il y a un concept que je n'ai pas bien saisi.

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut un début de solution
    En changeant l'emplacement de la variable $V{Total} du Country Group Header au Country Group Footer, le calcul se fait correctement :



    avec les propriétés de la variables suivantes :



    Il semble que l'expression de la variable $V{Total} soit évaluée à la fin du traitement du groupe.

    J'aurais besoin de l'obtenir dans le header du groupe, est-ce possible ?

  3. #3
    Membre éprouvé

    Inscrit en
    janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : janvier 2009
    Messages : 467
    Points : 1 244
    Points
    1 244
    Billets dans le blog
    2
    Par défaut
    J'ai un champ $F{value}
    Mon groupe se nomme lettre
    _______

    Ma variable Total est défini comme suit :



    Name : Total
    Variable Class : java.lang.Integer
    Calculation : Sum
    Reset type : Group
    Reset group : lettre
    Increment Type : None
    Increment group : -
    Incrementer Factory Class : -
    Variable Expression : $F{value}
    Initial Value Expression : -

    Code JRXML correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <variable name="Total" class="java.lang.Integer" resetType="Group" resetGroup="lettre" calculation="Sum">
            <variableExpression><![CDATA[$F{value}]]></variableExpression>
    </variable>
    _______

    Ensuite pour ton problème d'affichage, cela se résous dans le Text Field chargé de réaliser l'affichage de la variable dans le rapport. ($V{Total})

    En effet si tu ne change rien, dans le header du groupe (lettre dans mon cas), la variable vient d'être réinitialiser et du coup elle vaut null.


    Il faut donc demande a JasperReport de retarder l'affichage de cette variable.
    Dans les propriétés du Text Field $V{Total}, il faut :



    Evaluation Time : Group
    Evaluation Group : lettre
    En jrxml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <textField evaluationTime="Group" evaluationGroup="lettre">
            <reportElement x="103" y="3" width="100" height="20" forecolor="#009600"/>
            <textElement/>
            <textFieldExpression class="java.lang.Integer"><![CDATA[$V{Total}]]></textFieldExpression>
    </textField>
    On trouve un comportement similaire pour la gestion de la pagination (qui est présent dans un certain nombre de modèles)
    Le total des pages du rapport est en fait la valeur de la page $V{PAGE_NUMBER}, mais affiché lorsque le rapport est terminé (Evaluation Time : Report)

    _______

    On obtient le résultat souhaité :



    J'ai mis le total dans le header et le footer du groupe lettre.
    Dans le footer on peut laisser un Evaluation Time à Now (qui est la valeur par defaut).
    Images attachées Images attachées    

  4. #4
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut c'est résolu !
    Merci beaucoup jmini !

    Tes explications m'ont permis d'obtenir ce que je voulais.

    C'est très sympa d'avoir pris le temps de répondre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/03/2015, 12h23
  2. [1.x] generator.yml : ajouter un commentaire pour un groupe de champs
    Par Invité dans le forum Symfony
    Réponses: 1
    Dernier message: 16/02/2012, 11h38
  3. [AC-2003] Bloqué pour calculer la somme d'un champ entre 2 date
    Par bastien3117 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/08/2009, 14h08
  4. Réponses: 8
    Dernier message: 08/05/2007, 17h13
  5. Réponses: 4
    Dernier message: 09/02/2006, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo