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 24/03/2011, 14h38   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 3
Points : 3
Par défaut Redéfinir un paramètre

Bonjour,

Après des heures de test et de recherche sur les forums, je ne parviens toujours pas à générer mon rapport...

Voici mon problème :

Je dois pouvoir donner une contrainte de temps à mon select (dans le WHERE donc). Pour cela, je passe en paramètre un mot clé (e.g. DAY, WEEK etc.)
J'aimerais que mon jrxml utilise telle ou telle string en fonction.

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<parameter name="CLAUSE_DATE_P1" class="java.lang.String" isForPrompting="true">
/>
<parameter name="CLAUSE_DATE_P2" class="java.lang.String" isForPrompting="false">
   <defaultValueExpression>
   <![CDATA[new String("DAY").equals($P{CLAUSE_DATE_P1}) ?
   new String(" date_trunc('day',CURRENT_DATE-'1 DAY'::INTERVAL)") :
   new String(" date_trunc('day',CURRENT_DATE-'1 DAY'::INTERVAL)")]]>
   </defaultValueExpression>
</parameter>
 
<queryString>
   <![CDATA[select sum(MaTable.nombreToto)
   from MaTable
   where date_trunc('day',MaTable.dateHeure) = $P!{CLAUSE_DATE_P2}
   ]]>
</queryString>
Au lancement, je ne parviens même pas à compiler...

Code :
1
2
3
4
5
6
7
[ERROR] r.Report.main(Report.java:317)  - Cannot process report "C:\Users\moo\tmp-resources\rapport-13-01-15.jrxml" in output "C:\Users\moi\tmp-resources\rapport-13-01-15.pdf
net.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 
     1. Query parameter not found : CLAUSE_DATE_P2
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:258)
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:140)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:215)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:148)
Toute aide serait la bienvenue !
Merci d'avance !
Mathias77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 09h19   #2
Rédacteur/Modérateur
 
Avatar de JauB
 
Homme Faisel
Ingénieur COBOL/AS400
Inscription : octobre 2005
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Faisel
Âge : 31
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur COBOL/AS400
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 713
Points : 2 712
Points : 2 712
Envoyer un message via AIM à JauB Envoyer un message via MSN à JauB Envoyer un message via Yahoo à JauB
Bonjour,
Tu as essayé d'exécuter la même requête directement sur son SGBD, pour voir si elle marche ?
__________________
*** Ingénieur COBOL/AS400 ***

-------------------------------------------------------------------

Mes articles, Mon Blog

Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----

JauB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 10h57   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 3
Points : 3
Bonjour JauB et merci pour ta réponse,

Oui, elle marche sans problème.

D'ailleurs, ce qui est curieux, c'est que si je place mon paramètre CLAUSE_DATE_P2 dans un textfield et que je le retire de la queryString, ça compile et elle s'affiche bien.

Code :
1
2
3
4
5
6
<textField>
   <reportElement x="307" y="362" width="190" height="53"/>
   <textElement/>
   <textFieldExpression class="java.lang.String">
   <![CDATA[$P{CLAUSE_DATE_P2}]]></textFieldExpression>
</textField>
Pourtant, j'ai également suivi la méthode exposée ici : http://www.coderanch.com/t/435096/op...-multi-reports en mettant le texte entier de ma requête dans le paramètre, mais ça ne marche pas plus...
Mathias77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 11h26   #4
Rédacteur/Modérateur
 
Avatar de JauB
 
Homme Faisel
Ingénieur COBOL/AS400
Inscription : octobre 2005
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Faisel
Âge : 31
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur COBOL/AS400
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 713
Points : 2 712
Points : 2 712
Envoyer un message via AIM à JauB Envoyer un message via MSN à JauB Envoyer un message via Yahoo à JauB
Si tu peux nous poster ton Jrxml ?
__________________
*** Ingénieur COBOL/AS400 ***

-------------------------------------------------------------------

Mes articles, Mon Blog

Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----

JauB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 11h38   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 3
Points : 3
Super, le voici !
J'ai modifié l'extension en "xml", sinon la PJ ne passe pas.
Merci !!!
Fichiers attachés
Type de fichier : xml rapport-forum-exemple-1.xml (38,6 Ko, 6 affichages)
Mathias77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 11h55   #6
Rédacteur/Modérateur
 
Avatar de JauB
 
Homme Faisel
Ingénieur COBOL/AS400
Inscription : octobre 2005
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Faisel
Âge : 31
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur COBOL/AS400
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 713
Points : 2 712
Points : 2 712
Envoyer un message via AIM à JauB Envoyer un message via MSN à JauB Envoyer un message via Yahoo à JauB
Il est dans ta corbeille peut être

Citation:
Envoyé par Mathias77 Voir le message
Super, le voici !
J'ai modifié l'extension en "xml", sinon la PJ ne passe pas.
Merci !!!
__________________
*** Ingénieur COBOL/AS400 ***

-------------------------------------------------------------------

Mes articles, Mon Blog

Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----

JauB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 12h09   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 3
Points : 3
Non, il apparait bien dans mon message...
Mathias77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 12h19   #8
Rédacteur/Modérateur
 
Avatar de JauB
 
Homme Faisel
Ingénieur COBOL/AS400
Inscription : octobre 2005
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Faisel
Âge : 31
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur COBOL/AS400
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 713
Points : 2 712
Points : 2 712
Envoyer un message via AIM à JauB Envoyer un message via MSN à JauB Envoyer un message via Yahoo à JauB
Oui j'ai vu, tu l'as ajouté en modifiant ton message



Citation:
Envoyé par Mathias77 Voir le message
Non, il apparait bien dans mon message...
__________________
*** Ingénieur COBOL/AS400 ***

-------------------------------------------------------------------

Mes articles, Mon Blog

Rubrique Jasper/iReport :
------- Forum Jasper --------
----- FAQ Jasper/iReport -----

JauB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 12h29   #9
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 3
Points : 3
Vivi, m'étais trompé...
Mathias77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2011, 10h51   #10
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 3
Points : 3
Bonjour,

Je n'ai toujours pas trouvé la solution à mon problème , toute aide serait super bienvenue.

Un GRAND merci d'avance !
Mathias77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 15h19   #11
Membre éclairé
 
Inscription : juin 2005
Messages : 1 056
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 1 056
Points : 329
Points : 329
Envoyer un message via AIM à jadey Envoyer un message via MSN à jadey Envoyer un message via Yahoo à jadey
Bon, tout ce que j'ai pu faire c'est enlever tous les ou tu avais mis un et ton rapport compile. Tu ou sont les erreurs, à toi de voir si tu peux les corriger.
jadey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 11h32   #12
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 3
Points : 3
Bonjour,

J'ai résolu mon problème. En fait, ce qui posait problème, c'est la portée des paramètres. Contrairement à d'habitude, elles ne sont reconnues que si elles sont dans le contexte de l'exécution. En gros, si elles sont déclarées dans le document, elles ne sont pas utilisables dans un dataSet. Il faut donc les redéclarer dans le dataSet et le dataSetRun...

Et là, ça marche.

Code :
1
2
3
4
5
6
7
8
<parameter name="CLAUSE_DATE_P1" class="java.lang.String" isForPrompting="true"/>
<parameter name="CLAUSE_DATE_P2" class="java.lang.String" isForPrompting="false">
   <defaultValueExpression><![CDATA[new String("DAY").equals($P{CLAUSE_DATE_P1}) ?
         new String(" date_trunc('day',Journal.dateHeure) = date_trunc('day',CURRENT_DATE-'1 DAY'::INTERVAL)") :
         new String("WEEK").equals($P{CLAUSE_DATE_P1}) ?
         new String(" date_trunc('day',Journal.dateHeure) >= date_trunc('day',CURRENT_DATE-'1 WEEK'::INTERVAL) and date_trunc('day',Journal.dateHeure) < date_trunc('day',CURRENT_DATE)") :
         new String("NOTHING")]]></defaultValueExpression>
</parameter>

Code :
1
2
3
4
5
6
7
8
9
10
<subDataset name="dataset-nb-dim-base">
   <parameter name="CLAUSE_DATE_P2" class="java.lang.String"/>
      <queryString>
<![CDATA[select sum(NombreToto.nombre)
from NombreToto, Journal
where NombreDIM.idLog=Journal.idLog
and $P!{CLAUSE_DATE_P2}]]>
      </queryString>
   <field name="total" class="java.lang.Long"/>
</subDataset>
Code :
1
2
3
4
5
6
<datasetRun subDataset="dataset-nb-dim-base">
   <datasetParameter name="CLAUSE_DATE_P2">
      <datasetParameterExpression><![CDATA[$P{CLAUSE_DATE_P2}]]></datasetParameterExpression>
   </datasetParameter>
   <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
Mathias77 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 22h55.


 
 
 
 
Partenaires

Hébergement Web