PDA

View Full Version : Effectuer des calculs avec des champs calulés avec les fonctions du PRD



mazraelle
07-10-2007, 06:24 AM
Bonjour c'est encore moi,

Je n'arrive pas a sommer (ou à effectuer n'importe quelle operation )avec des valeurs calculer plus haut dans le rapport avec la fonction ItemSumFonction.:confused:
ex:
total des ventes =total des ventes de legumes + total des ventes de poissons(ces deux dernier étant deja calculé avec l'ItemSumFonction)

Une idée???

test.guillaume
07-10-2007, 09:10 AM
Bonjour,

Quel outil utilisez vous ?

Merci

Guillaume

mazraelle
07-10-2007, 10:12 AM
Le Pentaho Report Designer 1.5.4

test.guillaume
07-10-2007, 10:14 AM
Ah, désolé, je ne peux pas vous aider :/

Bonne continuation

cedric claidiere
07-11-2007, 03:24 AM
Bonjour,

Le mieux est de regarder un exemple en ouvrant la définition d'un rapport pré-existant (File->import pentaho report definition(xml))
Cela vous donnera une piste.
Vous n'avez qu'a regarder la définition "pentaho-demo\pentaho-solutions\samples\reporting\JFreeQuadForRegion.xml" pour commencer

D'une manière générale une bonne connaissance des exemple Pentaho, permet souvent de voir comment on peux faire.

mazraelle
07-13-2007, 06:32 AM
J'ai beau regarder dans les exemples, je ne trouve pas quelque chose qui se rappporte a mon cas.
La définition de "pentaho-demo\pentaho-solutions\samples\reporting\JFreeQuadForRegion.xml ne correspond en aucun cas a mon cas:

Je veux effectuer une operation avec deux ou plusieurs sommes.Ces dernieres étant realisés à l'aide de ItemSumFonction

Je veux aussi pouvoir additionner 2 champs de colonnes differentes.

Merci d'avance pour vos Lumières...

cedric claidiere
07-16-2007, 03:25 AM
Bonjour,

Veuillez accepter mes excuses je ne comprend pas bien la demande.

Vous souhaitez faire un total de votre/vos lignes et afficher un total en bas de colonne ou vous souhaitez faire ligne par ligne une somme de une ou plusieurs colonnes ?

mazraelle
07-16-2007, 03:40 AM
Bonjour,

En bas de colonnes j'ai des totaux. Je voudrais reutiliser ces totaux dans d'autres calculs. ex: total1-total2*100

cedric claidiere
07-16-2007, 04:26 AM
Dans ce cas ce n'est pas une ItemSumFunction mais une ColumnDifferenceExpression

Je vous est joint un exemple qui fait plus ou moins ce que souhaitez faire. Il est basé sur les données d'exemple Pentaho.

Si vos calculs sont plus complexes, il va peut-être falloir envisager de faire des Expression BSH (sorte de javascript)

Cela vous permet-il d'avancer ?

Cédric

mazraelle
07-16-2007, 06:15 AM
Je crois que je vais regarder du coté des BSH expression. A ce propos existe t'il de la doc la dessus??

Merci bcp

cedric claidiere
07-16-2007, 07:37 AM
re,

UNe expression BSH est du type :


// This declaration is important. The script-method getValue is called by the
// BSHExpression to evaluate the expression. We override the default implementation
// and perform own calculations here ...
Object getValue()
{
Object value = dataRow.get("VARIANCE");
if (value instanceof Number == false)
{
return Boolean.FALSE;
}
Number number = (Number) value;
if (number.doubleValue() < 0)
{
return Boolean.TRUE;
}
return Boolean.FALSE;
}


Cet exemple est issu du fichier pentaho-solution\samples\dashboard\jsp\embedded_report.xml

Pour plus d'infos sur le langage BSH : http://www.beanshell.org/docs.html

Cédric

BPM_PBE
07-16-2007, 12:21 PM
Bonsoir,

Vous trouverez un exemple d'utilisation/création d'une formule BSH à l'endroit suivant : http://wiki.pentaho.org/display/Reporting/02+-+The+different+libraries

Concrètement, la fonction dataRow.get("nom de ma colonne") permet de récupérer le contenu de la colonne "nom de ma colonne"), et donc de manipuler les données au niveau "item".

Cette entrée dans le Wiki vous donnera aussi la liste de toutes les bibliotèques utilisées par le moteur Jfreereport.

Malheureusement, pas beaucoup d'autres exemples sur l'utilisation des BSH, si ce n'est
sur le site de JFree :
http://jfree.org/jfreereport/api/org/jfree/report/modules/misc/beanshell/BSHExpression.html

Bonne soriée,
Patrick

BPM_PBE
07-19-2007, 03:52 PM
Bonjour,

Pour afficher un sous total dans un entête de rapport, il ne faut pas utiliser les fonctions de type "item", mais les fonctions de type "total" (comme "totalitemsum").

Les fonctions de type 'item' sont calculés au fur et à mesure des lignes, alors que les fonctions de type 'total' sont calculées avant le déroulement du rapport et des lignes d'item

Cordialement,
Patrick