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 10/12/2007, 16h44   #1
Membre confirmé
 
Avatar de Javix
 
Inscription : juin 2007
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 487
Points : 244
Points : 244
Par défaut utiliser une boucle 'for' in JAsperReport

J'ai une liste des clients dans mon rapport (comme Arrayist<Person> lst, par ex.)
Dans mon rapport je voudrais imprimer la liste des personnes contenues dans cette liste comme 'prénom' + 'nom' + 'adresse', etc.
Est-ce possible de le faire dans iReport ou directement dans le fichier jrxml?
merci
Javix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 10h13   #2
Membre actif
 
Avatar de tnodev
 
Inscription : mai 2005
Messages : 160
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2005
Messages : 160
Points : 155
Points : 155
Bonjour

est-ce la liste principale ou une liste secondaire ?
tnodev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 10h24   #3
Membre confirmé
 
Avatar de Javix
 
Inscription : juin 2007
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 487
Points : 244
Points : 244
j'ai trouvé une solution. Il faut utiliser un scriplet.
Code :
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
 
public class DecisionScriplet extends JRDefaultScriptlet {
 
    /**
     * @see net.sf.jasperreports.engine.JRDefaultScriptlet#beforeReportInit()
     */
    public void beforeReportInit() throws JRScriptletException {
	ArrayList invitPrimary = (ArrayList) getVariableValue("primaryInvitations");
	String primaries = "";
	for (int i = 0; i < invitPrimary.size(); i++) {
	    Person prs1= new Person();
	    primaries += (prs1.getFirstname() + " "
		    + prs1.getName() + ", ");
	    setVariableValue("primaryInvits", primaries);
	}
 
ArrayList invitSecondary = (ArrayList) getVariableValue("secondaryInvitations");
	String secondaries = "";
	for (int i = 0; i < invitSecondary.size(); i++) {
	    Person prs2= new SInvitation();
	    secondaries += (prs2.getFirstname() + " "
		    + prs2.getName() + ", ");
 
	    setVariableValue("secondaryInvits", secondaries);
	}
    }
}
Maintenant il y a un autre problème. iReport ne reconnait pas ma class java de scriplet. Comment lui indiquer le bon path, je veux dire dans quel format? J'ai essayé comme la path abcolute (via report properties):
E:\monprojet\src\scriplets\MonScriplet.java
et comme ça:
monprojet\src\scriplets\MonScriplet.java
mais iReport me signale tojours une "ClassNotFoundException". Je ne trouve null part d'explications.
Javix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 10h32   #4
Membre actif
 
Avatar de tnodev
 
Inscription : mai 2005
Messages : 160
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2005
Messages : 160
Points : 155
Points : 155
Je ne pense pas que ce soit le rôle des scriplet d'afficher une liste de personne... C'est plus dans le calcul de variables
tnodev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 10h40   #5
Membre confirmé
 
Avatar de Javix
 
Inscription : juin 2007
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 487
Points : 244
Points : 244
Non. Justement, grâce aux scriplets on peut exécuter des opérations que l'on ne peut pas faire à l'intérieur du rapport. Voici les détails venant du livre de JAsper Report:
Code :
1
2
 
As can be seen in the previous Java source code, scriptlets have access to report variables. Their value can be obtained by calling the getVariableValue() method. In this example, we access built-in variables only; however, there is nothing preventing scriptlets from accessing normal variables. Similarly, scriptlets can access report fields and parameters, both built-in and custom, by calling the getFieldValue() and getParameterValue() methods, respectively. Just like the getVariableValue() method, both of these methods take a single String parameter indicating the name of the field or parameter to obtain. Scriptlets can only access, but not modify, report fields and parameters. However, scriptlets can modify report variable values. This can be accomplished by calling the setVariableValue() method. This method is defined in JRAbstractScriptlet class, which is always the parent class of any scriptlet.
Bien il faut créer des variable qu'on pourrait modifier et en suite utiliser dans le rapport. Le problème c'est que je n'ai pas encore trouvé comment indiquer le path pour mon scriplet.
Javix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 10h45   #6
Membre actif
 
Avatar de tnodev
 
Inscription : mai 2005
Messages : 160
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2005
Messages : 160
Points : 155
Points : 155
Ok pas de problème quant au rôle des scriptlet.

Mais je pense que ce n'est pas la solution à ton problème, mais ce n'est que mon avis que je partage avec moi-même

à plus
tnodev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 10h05   #7
Membre confirmé
 
Avatar de Javix
 
Inscription : juin 2007
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 487
Points : 244
Points : 244
J'ai résolu le problème. Le PATH vers la classe de scriplet, - il faut l'indiquer comme ça
Code :
1
2
 
mypackage.MyScripletClassName
C'est tout. Un petit détail, - n'oubliez surtout pas à changer le mode de calcul de la variable en question sur 'System', sinon ça ne marche pas. iReport ne 'voit' pas la variable et envoie toujours null comme sa valeur.
Javix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h57.


 
 
 
 
Partenaires

Hébergement Web