Bonjour,
Je suis en train d'explorer un peu BIRT pour savoir si il correspond à ce que ce que voudrais faire et j'ai quelques questions auxquelles je n'ai pas encore trouvé de réponse.
J'essaye de travailler uniquement via l'Engine API étant donné que j'aimerais maitriser cette partie afin de permettre aux clients qui voudront un rapport de le personnaliser un maximum via une interface graphique.
Mes questions :
Via l'API (Et donc, génération du rptdesign à la volée), je n'arrive pas a générer une colonne de total. J'ai essaye de le faire via le designer puis ensuite dans le code d'utiliser les méthodes fournies par l'API afin d'arriver a re générer dynamiquement la même structure. J'arrive à quelque chose de plus ou moins semblable, la formule de calcul se trouve dans le fichier rpt avec les informations sur les autres colonnes, mais je n'arrive pas a manipuler la case "data" qui va accueillir le résultats de la somme.
Et en gros il me manque une propriété qui fait le lien entre les deux, si j'ajoute la ligne manuellement dans le fichier généré, j'ai le résultat attendu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ComputedColumn cc = StructureFactory.createComputedColumn(); cc.setName("TotalId"); cc.setExpression("Total.sum(row[\"ID\"])"); cc.setDataType("float"); computedSet.addItem(cs1); [...] RowHandle tableFooter = (RowHandle) tableHandle.getFooter().get(0); DataItemHandle data = factory.newDataItem("TotalId"); data.setProperty("name", "TotalId"); cell = (CellHandle) tableFooter.getCells().get(0); cell.getContent().add(data);
Une idée de ce qu'il faudrait ajouter ?
Deuxième question :
Lorsque je génère un total via le designer et que j'export en excell, la valeur du total est calculée puis copiée dans la cellule adaptée. (C'est la fonction javascript Total.sum()) Est-il possible de demander à l'engine de transformer ça en formule excel ? J'ai vu dans une démo que l'outil payant le faisait, mais je ne sais pas si la fonctionnalité lui est propre.
Merci d'avance.
Partager