IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasper Discussion :

utiliser une boucle 'for' in JAsperReport


Sujet :

Jasper

  1. #1
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    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

  2. #2
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    Bonjour

    est-ce la liste principale ou une liste secondaire ?

  3. #3
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    j'ai trouvé une solution. Il faut utiliser un scriplet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    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

  5. #5
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    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

  7. #7
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    J'ai résolu le problème. Le PATH vers la classe de scriplet, - il faut l'indiquer comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une boucle "For" dans un" Select Case"
    Par Novice_vba dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2014, 09h34
  2. Utiliser une boucle for avec un pas de 2
    Par ayari.zohra dans le forum Langage
    Réponses: 39
    Dernier message: 27/05/2012, 19h21
  3. [Débutant] utiliser une boucle for avec la fonction wavread()
    Par alimo44 dans le forum Signal
    Réponses: 1
    Dernier message: 21/06/2010, 08h08
  4. [Tableaux] Utiliser une boucle for dans un echo
    Par maoboy dans le forum Langage
    Réponses: 7
    Dernier message: 18/06/2007, 13h55
  5. utiliser une valeur float pour une boucle for
    Par didi59650 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/04/2006, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo