Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper
Jasper Forum d'entraide sur Jasper Reports. Avant de poster --> FAQ Jasper, Tutoriels Jasper
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2011, 11h11   #1
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 185
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 185
Points : 39
Points : 39
Par défaut Tri des lignes et colonnes d'une crosstab de Jasper

Bonjour,

j'utilise Jaspersoft iReport Designer 4.1.3 pour designer mes rapport. J'utilise une crosstab dans un rapport et
1) je voudrais trier mes lignes dans le sens croissant lexicographiquement: J'ai ma row group qui est une propriété "ACT_NAME" dont la Bucket expression est "$F{actName}" et la bucket Value Class est "java.lang.String". J'ai spécifié un ordre "Ascending" mais cela ne change rien
1) je voudrais trier mes colonnes dans un certain sens: J'ai ma column group qui est une propriété "SST_STATUS" dont la Bucket expression est "$F{sstStatus}" et la bucket Value Class est "java.lang.String". je voudrais par exemple mettre en première colonne le cas où $F{sstStatus} est ègal à '131', mettre en deuxième colonne le cas où $F{sstStatus} est ègal à '145'

J'envoie les choses suivantes à mon rapport

Code :
1
2
3
4
5
6
7
 
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("format", format); // (can be csv, html, pdf, xls)
        model.put("jrDataSource", jrDataSource); ou jrDataSource est une collection d objets dont les propriété sont les champs jasper. Par exemple j ai une propriété de nom actName et une de nom sstStatus
        response.setContentType("application/" + format);
        response.setHeader("Content-Disposition", "attachment;filename=queryRpt_" + simpleDateFormat.format(now) + "." + format + ";");
        return new ModelAndView("queryReport", model);
ou jrDataSource est une collection d objets dont les propriété sont les champs jasper. Par exemple j ai une propriété de nom actName et une de nom sstStatus qui sont des String

J'ai trouvé la page internet qui suit (http://stackoverflow.com/questions/2...atorexpression) qui parle des comparatorExpression mais je ne sais pas comment l'adapter à mon cas

I've had the same issue and did not find any examples or explanation but I found how to do it. I'll explain, so hopefully other people can use this solution.

I've used the code below for jasperreports 3.1.0 and iReport 3.1.4, but I guess it works for pretty much all versions.

First you'll have to make sure that you know wich class you have in the bucket expression for your row/column group. By default this is java.lang.String, but I have a custom class there. For this to work I needed to edit the xml like this for my column group:
Code :
1
2
 
<bucketExpression class="java.lang.String"><![CDATA[$F{customObj}]]></bucketExpression>
to

Code :
1
2
 
<bucketExpression class="com.project.CustomObj"><![CDATA[$F{customObj}]]></bucketExpression>
Obviously this customObj value is a field with the corresponding class, defined in the report itself.

Then you'll need to add a Comparator as a parameter, for example:
Code :
1
2
3
4
5
6
7
 
parameters.put("OVERRIDE_Comparator", new Comparator<CustomObj>() {
    public int compare(CustomObj c1, CustomObj c2) {
        //create your custom compare logic over here, this code works as if no custom Comparator is used
        return c1.compareTo(c2);
    }
});
Now add such a OVERRIDE_Comparator parameter in the jasperreport, using the java.util.Comparator Parameter Class.

Final step: Put $P{OVERRIDE_Comparator} as the Comparator Expression in the row/column group you needed.

When compiling such a report, the most likely compile error would be casting issues. Jasperreports defaults to java.lang.String, you might need to edit the xml of the report manually to get the correct class at each step.

(I found out this method from some asian site, thankfully the code itself was readable! :-) )

Pour adapter tout ceci à mon cas, je ne sais pas
1) comment passer la classe "com.project.CustomObj" à mon rapport depuis mon code java. Comment Jasper peut-il connaitre cette classe ? Faut-il la définir au niveau du code java et dans ce cas comment la passer à Jasper ? ou faut-il la définir au niveau de Jasper Designer et dans ce cas comment faire ?
2) comment passer le paramètre "OVERRIDE_Comparator" à mon rapport jasper. Faut-il le définir au niveau du code java et dans ce cas comment le passer à Jasper ? ou faut-il le définir au niveau de Jasper Designer et dans ce cas comment faire ?

Merci d'avance pour vos réponses
flamant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 15h25   #2
Invité régulier
 
Inscription : juin 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 8
Points : 6
Points : 6
Bonjour,

aurais-tu trouvé une solution à ton problème car je cherche à faire la meme chose que toi. C'est à dire trier mon tableau par rapport à une valeur contenu.

D'avance merci !
chcollet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h55.


 
 
 
 
Partenaires

Hébergement Web