Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper > iReport
iReport Forum d'entraide sur iReport
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 23/10/2007, 14h37   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 6
Points : 0
Points : 0
Par défaut erreur de compilation dans la création d'un crosstab

Bonjour à tous

J'essaye de créer un crosstab et j'ai le problèmer ci-dessous lors de la compilation:

Cannot cast from integer to string

Voici le message d'erreur:

Compilation vers le fichier... .\rapport_modèle.jasper -> C:\Program Files\JasperSoft\iReport-2.0.1\rapport_modèle.java
Erreurs lors de la compilation de .\rapport_modèle.jasper.
net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. Cannot cast from Integer to String value = (java.lang.String)(((java.lang.Integer)field_priorite.getValue()));//$JR_EXPR_ID=12$ <----------------------------------------------------------------> 2. Cannot cast from Integer to String

Merci de m'aider
longuele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 10h06   #2
Membre du Club
 
Inscription : avril 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 57
Points : 62
Points : 62
Envoyer un message via MSN à Mandibull
Avec un ".toString()" à la fin de ton expression ça passe pas ?
Mandibull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 21h04   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 6
Points : 0
Points : 0
Par défaut rien ne marche

Avec un .toString() à la fin de mon expression j'ai ça:

Compilation vers le fichier... .\exemple4.jasper -> C:\Program Files\JasperSoft\iReport-2.0.1\exemple4.java
net.sf.jasperreports.engine.design.JRValidationFault@15e3abb java.lang.ClassNotFoundException: java.lang.toString() Line: 100, Column: 55 JRXML Element: /jasperReport/detail[1]/band[1]/crosstab[1]/columnGroup[1]/bucket[1]/bucketExpression[1] net.sf.jasperreports.engine.design.JRValidationFault@161f9da java.lang.ClassNotFoundException: java.lang.toString() Line: 100, Column: 55 JRXML Element: /jasperReport/detail[1]/band[1]/crosstab[1]/columnGroup[1]/bucket[1]/bucketExpression[1] net.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 1. java.lang.ClassNotFoundException: java.lang.toString() 2. java.lang.ClassNotFoundException: java.lang.toString() at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:260) at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:144) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:587) at java.lang.Thread.run(Unknown Source)
Durée de la compilation : 171.


Merci de m'aider
longuele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2007, 13h50   #4
Membre du Club
 
Inscription : avril 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 57
Points : 62
Points : 62
Envoyer un message via MSN à Mandibull
Euh... en fait ce qu'il faudrais faire c'est mettre "field_priorite.toString()" à l'endroit d'où provient l'erreur.
Mandibull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2007, 16h02   #5
Invité de passage
 
Inscription : octobre 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 6
Points : 0
Points : 0
Par défaut Erreur lors du remplissage de l'impression

Pardonnez moi pour mes betises mais je suis q'un débutant sur ireport.

j'ai fait le remplacement comme vous me l'avez récommandé, la compilation à presque marché. Ireport me rétourne ceci:

Remplissage du rapport…
Paramètres locaux : français (France)
Fuseau horaire : Par défaut
Utilisation du virtualiseur de rapport…Taille JRFileVirtualizer : 100 Répertoire de permutation : .;
Erreur lors du remplissage de l’impression… Error incrementing crosstab dataset
net.sf.jasperreports.engine.JRRuntimeException: Error incrementing crosstab dataset at net.sf.jasperreports.engine.fill.JRFillCrosstab$JRFillCrosstabDataset.customIncrement(JRFillCrosstab.java:671) at net.sf.jasperreports.engine.fill.JRFillElementDataset.increment(JRFillElementDataset.java:169) at net.sf.jasperreports.engine.fill.JRCalculator.calculateVariables(JRCalculator.java:152) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:682) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportContent(JRVerticalFiller.java:275) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:117) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:791) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:695) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:943) at java.lang.Thread.run(Unknown Source) Caused by: net.sf.jasperreports.engine.JRException: Crosstab data has already been processed. at net.sf.jasperreports.crosstabs.fill.calculation.BucketingService.addData(BucketingService.java:295) at net.sf.jasperreports.engine.fill.JRFillCrosstab$JRFillCrosstabDataset.customIncrement(JRFillCrosstab.java:667) ... 12 more
L’impression n’est pas complétée. Essayez d’utiliser une EmptyDataSource...

Merci pour vos récommandations

Une pétite question: La modification que vous m'avez demandé de faire c'est au niveau de la classe où j'ai java.lang.String ou l'expression de bloc.

Merci pour votre aide
longuele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 10h18   #6
Membre du Club
 
Inscription : avril 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 57
Points : 62
Points : 62
Envoyer un message via MSN à Mandibull
En fait tu as un champ de type "java.lang.String" et tu veux mettre une variable "java.lang.Integer" dans le champ. Deux choix possibles : soit tu remplaces java.lang.String par java.lang.Integer (le mieux) soit tu mets ".toString()" à la fin de l'expression dans le champ. Bon c'est encore un peu flou comme explication ! Mais t'as résolu le problème donc ça va

Sinon pour ton erreur "Error incrementing crosstab dataset" tu devrais vérifier que tu n'a pas de champs "null" venant de ta BDD.
Mandibull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 18h46   #7
Invité de passage
 
Inscription : octobre 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 6
Points : 0
Points : 0
Par défaut problème de type

Bonjour

J'ai évidement un sérieux problème avec les types. As tu un lien a me récommander sinon, une explication en live me ferait vraiment du bien.

Cordialement
longuele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 10h13   #8
Membre du Club
 
Inscription : avril 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 57
Points : 62
Points : 62
Envoyer un message via MSN à Mandibull
Alors, pour faire simple, en Java il y a les types : int, bool et double par exemple (leur nom ne commence jamais par une majuscule). Et des classes pour faciliter les opérations sur les types : Integer, Boolean, Double, BigDecimal, String, etc.

Ce qu'il faut savoir c'est que toute ces classes ont une métode toString() qui les transforment en String. C'est ces classes qu'on utilise généralement pour stocker des nombres (et c'est ce que fait Jasper). Seul soucis, on ne peut pas faire d'opération sur ces classes, du coup il faut appeler une méthode qui va renvoyer le type natif correspondant. Exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Integer nombre;
int autre_nombre;
nombre = 42; // erreur, 42 est un "int" et pas une classe Integer !
nombre = new Integer(42); // ok
autre_nombre = 42; // ok
String toto = nombre.toString(); // on récupère le nombre en String
toto = autre_nombre.toString(); // erreur, int n'a pas de méthodes !
 
 
autre_nombre = autre_nombre + 16; // ok
nombre = nombre + autre_nombre; // erreur encore, pas d'opérations avec les Integer !
nombre = nombre.intValue() + autre_nombre; // l'opération est valide mais on ne peut pas stocker ça dans un Integer !
nombre = new Integer(nombre.intValue() + 1); // là c'est bon
Bref, si c'est trop flou je te conseille d'aller lire un bon cours dans la rubrique Java du site
Mandibull 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 10h03.


 
 
 
 
Partenaires

Hébergement Web