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

Jasper Discussion :

multiplication et division de variables BigDecimal


Sujet :

Jasper

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Points : 34
    Points
    34
    Par défaut multiplication et division de variables BigDecimal
    Bonjour , je développe un rapport contenant un Pie 3D chart en utilisant iReport 3.5.2

    Pour les chart Data du camembert , j'ai 2 Pie séries :
    - la 1ère série prend comme "Value Expression" : ($V{Consomme_1}.divide($V{Vendu_1})).multiply( $V{Cent} )
    - la 2ème série prend comme "Value Expression": ($V{RAF_reel}.multiply( $V{Cent} )).divide($V{Vendu_1})

    Sachant que :
    * $V{Consomme_1} , $V{Vendu_1} et $V{RAF_reel} sont 3 variables de type BigDecimal.
    * $V{Cent} est aussi une variable de type BigDecimal qui prend comme valeur : $V{Cent}.valueOf( 100 )

    j'ai cette erreur à l'execution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Error filling print... Error evaluating expression :
     
    Source text : 
    ($V{Consomme_1}.divide($V{Vendu_1})).multiply( $V{Cent} )
     
    net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
     
    Source text : ($V{Consomme_1}.divide($V{Vendu_1})).multiply( $V{Cent} )
     
    at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:197) 
    at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:574) 
     at net.sf.jasperreports.charts.fill.JRFillPieSeries.evaluate(JRFillPieSeries.java:139)
    a net.sf.jasperreports.charts.fill.JRFillPieDataset.customEvaluate(JRFillPieDataset.java:219)
    at net.sf.jasperreports.engine.fill.JRFillElementDataset.evaluate(JRFillElementDataset.java:150)
    at net.sf.jasperreports.engine.fill.JRCalculator.calculateVariables(JRCalculator.java:148)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:716)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:256)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:114)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:911)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:814)
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:421)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:251)
    at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:898)
    at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)
    at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)
     
    Caused by: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.  
    at java.math.BigDecimal.divide(BigDecimal.java:1514)
    at rapport_charges_production_1254383733531_915755.evaluate(rapport_charges_production_1254383733531_915755:475)
    at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:186)
    ... 16 more
     
    Print not filled. Try to use an EmptyDataSource...
    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Points : 1 253
    Points
    1 253
    Billets dans le blog
    2
    Par défaut
    Problème de Java à mon avis. Javadoc BigDecimal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $V{Cent}.valueOf( 100 )
    ValueOf est une méthode statique, et je ne pense pas que tu puisse l'utiliser sur une instance d'un BigDecimal (même si je ne suis pas un spécialiste de Java, ni de son utilisation dans JasperReport)

    J'essayerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BigDecimal.valueOf( 100 )
    voir même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.math.BigDecimal.valueOf( 100 )
    ou alors en instanciant un BigDecimal a 100 :

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    J'ai essayé mais j'ai eu le même message d'erreur pour les 3 propositions

    Merci quand même pour votre réponse

  4. #4
    Membre éprouvé

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Points : 1 253
    Points
    1 253
    Billets dans le blog
    2
    Par défaut
    Est ce que tu es certain que $V{Vendu_1} n'est pas égal à 0 ?
    Ca sent la division par 0...
    Essaye avec un multiply au lieu de divide (juste pour voir si cela marche -- évidement le résultat ne sera pas cohérent).

  5. #5
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Bonjour,
    Je pense que tu dois créer une variable myVariable qui a pour valeur : ($V{Consomme_1}.divide($V{Vendu_1}))

    et dans le Value Expression tu mets :
    $V{myVariable }.multiply( $V{Cent} )

    Tu nous tiens au courant.
    Bon courage




    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Merci pour vos réponse.

    En fait c'est réglé; il suffisait de remplacer les expressions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($V{Consomme_1}.divide($V{Vendu_1})).multiply( $V{Cent} )
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($V{Consomme_1}.divide($V{Vendu_1},2)).multiply( $V{Cent} )
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($V{RAF_reel}.multiply( $V{Cent} )).divide($V{Vendu_1})
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($V{RAF_reel}.multiply( $V{Cent} )).divide($V{Vendu_1},2)
    Donc il fallait indiquer le roundingMode : divide( java.math.BigDecimal val, int roundingMode)

Discussions similaires

  1. multiple formulaire Document elements variable
    Par samtheh dans le forum VBScript
    Réponses: 5
    Dernier message: 24/10/2008, 13h14
  2. diviser une variable
    Par ledawa dans le forum Débuter avec Java
    Réponses: 14
    Dernier message: 31/07/2008, 11h10
  3. intégrale multiple avec seulement un variable
    Par samia_6 dans le forum Mathématiques
    Réponses: 3
    Dernier message: 20/11/2007, 16h50
  4. plus grand que sur une variable BigDecimal
    Par Bindy dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2007, 09h52
  5. Multiplication et division...
    Par lyim dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/05/2006, 14h24

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