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 08/08/2011, 14h42   #1
Membre Expert
 
Avatar de ®om
 
Inscription : janvier 2005
Messages : 2 801
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 801
Points : 2 371
Points : 2 371
Par défaut Affichage de champs conditionnels

Bonjour,

Dans la section détails, j'ai besoin d'afficher plusieurs champs les uns en dessous des autres :
Code :
1
2
3
Nom:    [valeur]
Prénom: [valeur]
Âge:    [valeur]
Jusqu'ici, tout va bien, c'est facile (d'autant que chacun des champ est positionné de manière absolu par rapport au haut de la section détail).

Maintenant, je voudrais, selon un paramètre, pouvoir supprimer certains champs à l'affichage. Par exemple, le champ Prénom. Si je fais ça avec "Print When Expression", alors ça va laisser un blanc :
Code :
1
2
3
Nom:    [valeur]
 
Âge:    [valeur]
Moi, je voudrais ça :
Code :
1
2
Nom:    [valeur]
Âge:    [valeur]
(décaler les lignes suivantes pour ne pas avoir de blanc)

Comment faire ça simplement ?

Merci d'avance.
®om est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 14h57   #2
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 37
Points : 26
Points : 26
bonjour, je pense qu'il faudrait utiliser 'Print when expression' au niveau de la bande détail, et non au niveau des champs
mespub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 15h06   #3
Membre Expert
 
Avatar de ®om
 
Inscription : janvier 2005
Messages : 2 801
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 801
Points : 2 371
Points : 2 371
Citation:
Envoyé par mespub Voir le message
bonjour, je pense qu'il faudrait utiliser 'Print when expression' au niveau de la bande détail, et non au niveau des champs
Comment ça ?

En fait, ces champs sont affichés pour chaque item du résultat de la requête.
Donc tous ces champs sont dans la partie Detail.

S'il y a 3 résultats à la requete, le résultat est du genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
Nom:    [valeur]
Prénom: [valeur]
Âge:    [valeur]
 
Nom:    [valeur]
Prénom: [valeur]
Âge:    [valeur]
 
Nom:    [valeur]
Prénom: [valeur]
Âge:    [valeur]
Mais selon un paramètre que je donne au rapport, je voudrais parfois qu'il soit comme ceci :
Code :
1
2
3
4
5
6
7
8
Nom:    [valeur]
Âge:    [valeur]
 
Nom:    [valeur]
Âge:    [valeur]
 
Nom:    [valeur]
Âge:    [valeur]
Si j'ajoute un "Print When Expression" sur la bande Detail directement, ça va juste supprimer des "blocs" contenant chacun tous les champs.
®om est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 15h41   #4
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 37
Points : 26
Points : 26
oups, désolé j'avais lu trop vite

dans ce cas il faut que le paramètre 'Position Type' des champs soit en 'float' au lieu de 'Fix relative to top'
mespub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 15h44   #5
Membre Expert
 
Avatar de ®om
 
Inscription : janvier 2005
Messages : 2 801
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 801
Points : 2 371
Points : 2 371
Citation:
Envoyé par mespub Voir le message
oups, désolé j'avais lu trop vite

dans ce cas il faut que le paramètre 'Position Type' des champs soit en 'float' au lieu de 'Fix relative to top'
Merci de ta réponse.

J'ai bien essayé de passer le "Position Type" en "Float", mais que faut-il faire d'autre ?
Car le composant a quand même besoin d'une valeur "Top" renseignée.
®om est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 15h48   #6
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 37
Points : 26
Points : 26
Je pense qu'il n'y a rien d'autre à faire. De cette manière, chaque élément se positionnera automatiquement à la suite du précédent, le premier se plaçant à la suite du dernier élément de la bande précédant la bande détail.
mespub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 15h52   #7
Membre Expert
 
Avatar de ®om
 
Inscription : janvier 2005
Messages : 2 801
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 801
Points : 2 371
Points : 2 371
Citation:
Envoyé par mespub Voir le message
Je pense qu'il n'y a rien d'autre à faire. De cette manière, chaque élément se positionnera automatiquement à la suite du précédent, le premier se plaçant à la suite du dernier élément de la bande précédant la bande détail.
Si je mets mes éléments en float et que je mets comme "Print When Expression" "new Boolean(false)", alors j'ai un blanc entre ma ligne "Nom" et ma ligne "Âge".
®om est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 16h10   #8
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 37
Points : 26
Points : 26
L'expression conditionnelle d'affichage du champ serait plutot :
$F{champ} == null?Boolean.FALSE:Boolean.TRUE

et il faudra cocher 'Remove Line When Blank
mespub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 16h26   #9
Membre Expert
 
Avatar de ®om
 
Inscription : janvier 2005
Messages : 2 801
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 801
Points : 2 371
Points : 2 371
Citation:
Envoyé par mespub Voir le message
L'expression conditionnelle d'affichage du champ serait plutot :
$F{champ} == null?Boolean.FALSE:Boolean.TRUE

et il faudra cocher 'Remove Line When Blank
Ça ne déplace pas les champs du dessous vers le haut...

D'ailleurs, je ne comprends absolument pas ce réglage "remove line when blank", si je mets un staticfield sans valeur, et que je coche "remove line when blank", ça ne décale pas les lignes du dessous (d'ailleurs comment y arriverait-il, ces lignes du dessous on une valeur "top" renseignée, même si elles ont une position définie comme "float" ?).
®om est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 16h38   #10
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 37
Points : 26
Points : 26
Ca devrait passer comme ça. Les paramètres 'Remove Line When Blank' et 'Float' sont prioritaires sur la valeur Top, qui dans ce cas ne sert qu'au design de l'écran.
Et bien sur, il faut que tous les champs soient en Float.

C'est peut-être le 'Print When Expression' qui renvoie True au lieu de False.
La valeur du champ prénom n'est peut-être pas 'null' et dans ce cas il faut modifier l'expression de comparaison.
mespub est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 16h58   #11
Membre Expert
 
Avatar de ®om
 
Inscription : janvier 2005
Messages : 2 801
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 801
Points : 2 371
Points : 2 371
Citation:
Envoyé par mespub Voir le message
Ca devrait passer comme ça. Les paramètres 'Remove Line When Blank' et 'Float' sont prioritaires sur la valeur Top, qui dans ce cas ne sert qu'au design de l'écran.
Et bien sur, il faut que tous les champs soient en Float.

C'est peut-être le 'Print When Expression' qui renvoie True au lieu de False.
La valeur du champ prénom n'est peut-être pas 'null' et dans ce cas il faut modifier l'expression de comparaison.
Ah, ça fonctionne !

J'ai recommencé et cette fois-ci ça a marché. J'ai forcément quelque chose de différent de tout à l'heure, mais je ne sais pas quoi.

En tout cas merci.
®om est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 17h33   #12
Membre Expert
 
Avatar de ®om
 
Inscription : janvier 2005
Messages : 2 801
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 801
Points : 2 371
Points : 2 371
Ah mais en fait c'est plus compliqué que ça.

J'ai deux colonnes de champs, l'un en face de l'autre :

Code :
1
2
3
Nom:    [valeur]        Var1:   [valeur]
Prénom: [valeur]        Var2:   [valeur]
Âge:    [valeur]        Var3:   [valeur]
Si je "supprime" avec "Remove Line When Blank" et "Print With Expression" à false, et qu'il y a des champs sur la même ligne, ça ne supprime pas :

Code :
1
2
3
Nom:    [valeur]        Var1:   [valeur]
                        Var2:   [valeur]
Âge:    [valeur]        Var3:   [valeur]
Par contre, si je vire les champs de droite, j'ai bien :
Code :
1
2
Nom:    [valeur]
Âge:    [valeur]
sans blanc.

Comment lui dire que les deux colonnes de champs sont indépendantes ?
®om est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 10h27   #13
Membre Expert
 
Avatar de ®om
 
Inscription : janvier 2005
Messages : 2 801
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 801
Points : 2 371
Points : 2 371
Bon, rien à faire, dès qu'il y a un élément sur la droite, le "remove line when blank" ne fonctionne plus.
®om 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 07h57.


 
 
 
 
Partenaires

Hébergement Web