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

Java Discussion :

Problème JasperReport


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut Problème JasperReport
    Bonjour,

    Je suis débutant dans la génération des rapports avec JasperReport, pour cela j'ai suivi un tutoriel (http://www.javatutoriales.com/2009/0...pots-y_18.html) (2ème partie JAVA -2 - Subreportes con datasources propios-) pour faire un exemple avec "Subreporte"

    Comme il est indiqué sur le tutoriel, j'ai créé mon rapport principal et mon sous-rapport et mes classes Java :

    Alumno.java
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    package pack1;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
     
    public class Alumno {
        private int id;   
        private String clave;   
        private String nombre;    
        private List materias = new ArrayList();    
     
        public Alumno()   
        {   
        }    
     
        public Alumno(int id, String clave, String nombre)   
        {       
            this.id = id;       
            this.clave = clave;       
            this.nombre = nombre;   
        }
     
        public int getId() {
            return id;
        }
     
        public void setId(int id) {
            this.id = id;
        }
     
        public String getClave() {
            return clave;
        }
     
        public void setClave(String clave) {
            this.clave = clave;
        }
     
        public String getNombre() {
            return nombre;
        }
     
        public void setNombre(String nombre) {
            this.nombre = nombre;
        } 
     
        public List getMaterias() {       
            return materias;   
        }    
     
        public void setMaterias(List materias) {       
                this.materias = materias;   
        }    
     
        public void addMateria(Materia materia) {       
                this.materias.add(materia);   
        }
     
        public JRDataSource getMateriasDS()  {       
            return new JRBeanCollectionDataSource(materias);   
        }
    }
    Materia.java
    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
    28
    29
    30
    31
    32
    33
    package pack1;
     
    public class Materia {
     
        private int id;   
        private String nombre;    
     
        public Materia()   
        {   
        }    
     
        public Materia(int id, String nombre)   
        {       
            this.id = id;       
            this.nombre = nombre;   
        }
     
        public int getId() {
            return id;
        }
     
        public void setId(int id) {
            this.id = id;
        }
     
        public String getNombre() {
            return nombre;
        }
     
        public void setNombre(String nombre) {
            this.nombre = nombre;
        }       
    }
    et ma classe Main.java
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    package pack1;
     
    import java.io.File;
    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.List;
     
    import net.sf.jasperreports.engine.JRExporter;
    import net.sf.jasperreports.engine.JRExporterParameter;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
    import net.sf.jasperreports.engine.design.JasperDesign;
    import net.sf.jasperreports.engine.export.JRPdfExporter;
    import net.sf.jasperreports.engine.util.JRLoader;
    import net.sf.jasperreports.engine.xml.JRXmlLoader;
     
    public class Main {
     
        /**
         * @param args
         */
        public static void main(String[] args) throws Exception {
            String url = null;
     
            List listaAlumnos = new ArrayList();        
     
            for (int i = 1; i <= 5; i++)       
            {           
                Alumno alumno = new Alumno(i, "0000" + i, "Alumno " + i);           
                listaAlumnos.add(alumno);            
     
                for (int j = 1; j <= 3; j++)           
                {               
                    alumno.addMateria(new Materia(j, "Materia " + j));           
                }       
            }        
     
            url = "D:/reportJRXML/reporteMaestroDS.jrxml";
     
            JasperDesign reporte = JRXmlLoader.load(url);
            JasperReport jasperReport = JasperCompileManager.compileReport(reporte);
     
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, new JRBeanCollectionDataSource(listaAlumnos));        
     
            JRExporter exporter = new JRPdfExporter();       
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);       
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE, new File("D:/reporte2PDF/reporteMaestroDS.pdf"));        
            exporter.exportReport();   
        }
    }
    mais lors de l’exécution, il me donne cette l'erreur :
    Exception in thread "main" net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : materiasDs
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:123)
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:96)
    at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:100)
    at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:1317)
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1218)
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1194)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1544)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:142)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841)
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969)
    at pack1.Main.main(Main.java:52)
    Caused by: java.lang.NoSuchMethodException: Unknown property 'materiasDs' on class 'class pack1.Alumno'
    at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1313)
    at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:762)
    at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:837)
    at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111)
    ... 13 more
    J'ai cherché sur le net mais j'ai pas trouvé grand chose...

    Quelqu'un a une idée d'où vient l'erreur ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,

    Ajoute un propriété private JRDataSource materiasDS et son setter.

    A+.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Salut,

    Ajoute un propriété private JRDataSource materiasDS et son setter.

    A+.
    merci pour la réponse, mais toujours le même problème

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Peut-on voir ton fichier jrxml ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Peut-on voir ton fichier jrxml ?
    Oui, les 2 fichiers jrxml est dans le même répertoire

    voici mon rapport principale : "reporteMaestroDS.jrxml"

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?xml version="1.0" encoding="UTF-8"?>
    <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="reporteMaestroDS" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3c2dc340-59d0-4844-be1f-4b6c83a60de9">
    	<property name="ireport.zoom" value="1.0"/>
    	<property name="ireport.x" value="0"/>
    	<property name="ireport.y" value="0"/>
    	<field name="clave" class="java.lang.String"/>
    	<field name="nombre" class="java.lang.String"/>
    	<field name="materiasDs" class="net.sf.jasperreports.engine.JRDataSource"/>
    	<field name="id" class="java.lang.Integer"/>
    	<background>
    		<band splitType="Stretch"/>
    	</background>
    	<title>
    		<band height="71" splitType="Stretch">
    			<staticText>
    				<reportElement uuid="2eb9fb34-26ce-4f11-b976-d51f3af761d9" x="73" y="11" width="405" height="48"/>
    				<textElement textAlignment="Center" verticalAlignment="Middle">
    					<font size="24" isBold="true"/>
    				</textElement>
    				<text><![CDATA[Lista de Alumnos]]></text>
    			</staticText>
    		</band>
    	</title>
    	<pageHeader>
    		<band splitType="Stretch"/>
    	</pageHeader>
    	<detail>
    		<band height="121" splitType="Stretch">
    			<staticText>
    				<reportElement uuid="facf2493-6bff-4b08-9fa5-18c3c9218f6b" x="13" y="9" width="60" height="20"/>
    				<textElement textAlignment="Center" verticalAlignment="Middle">
    					<font size="12" isBold="true"/>
    				</textElement>
    				<text><![CDATA[Clave :]]></text>
    			</staticText>
    			<staticText>
    				<reportElement uuid="6dce8362-bcc9-4608-9fda-8febe2e072bb" x="175" y="9" width="85" height="20"/>
    				<textElement textAlignment="Center" verticalAlignment="Middle">
    					<font size="14" isBold="true"/>
    				</textElement>
    				<text><![CDATA[Nombre :]]></text>
    			</staticText>
    			<textField>
    				<reportElement uuid="1f381afb-2686-41ee-b13e-8fbda6ff796f" x="81" y="9" width="79" height="20"/>
    				<textElement textAlignment="Center" verticalAlignment="Middle">
    					<font isBold="true"/>
    				</textElement>
    				<textFieldExpression><![CDATA[$F{clave}]]></textFieldExpression>
    			</textField>
    			<textField>
    				<reportElement uuid="7ede4ffa-5a29-4697-af4e-870bcb86eec6" x="271" y="9" width="100" height="20"/>
    				<textElement textAlignment="Center" verticalAlignment="Middle">
    					<font isBold="true"/>
    				</textElement>
    				<textFieldExpression><![CDATA[$F{nombre}]]></textFieldExpression>
    			</textField>
    			<subreport runToBottom="true">
    				<reportElement uuid="fcc8f19c-1294-4b87-8e51-46a49ec025f0" x="0" y="34" width="555" height="87"/>
    				<dataSourceExpression><![CDATA[$F{materiasDs}]]></dataSourceExpression>
    				<subreportExpression><![CDATA["subreporteMateriasDS.jrxml"]]></subreportExpression>
    			</subreport>
    		</band>
    	</detail>
    </jasperReport>

    et le subreporte : "subreporteMateriasDS.jrxml"

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?xml version="1.0" encoding="UTF-8"?>
    <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="subreporteMateriasDS" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="fc440082-37ae-4a3e-9e7b-bcc0f8812344">
    	<property name="ireport.zoom" value="1.0"/>
    	<property name="ireport.x" value="0"/>
    	<property name="ireport.y" value="0"/>
    	<field name="id" class="java.lang.Integer"/>
    	<field name="nombre" class="java.lang.String"/>
    	<background>
    		<band splitType="Stretch"/>
    	</background>
    	<title>
    		<band height="24" splitType="Stretch">
    			<staticText>
    				<reportElement uuid="23e6a6f5-fe41-497a-8e8e-eab1c1b534ff" x="13" y="3" width="64" height="20"/>
    				<textElement verticalAlignment="Middle">
    					<font size="12" isBold="true"/>
    				</textElement>
    				<text><![CDATA[Materias:]]></text>
    			</staticText>
    		</band>
    	</title>
    	<detail>
    		<band height="26" splitType="Stretch">
    			<textField>
    				<reportElement uuid="34eb3d09-a05b-4743-a125-992b01fdb429" x="12" y="4" width="37" height="20"/>
    				<textElement verticalAlignment="Middle"/>
    				<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
    			</textField>
    			<textField>
    				<reportElement uuid="100e680f-0762-4437-a712-c023d7fcd4a5" x="90" y="4" width="354" height="20"/>
    				<textElement verticalAlignment="Middle">
    					<font isBold="true"/>
    				</textElement>
    				<textFieldExpression><![CDATA[$F{nombre}]]></textFieldExpression>
    			</textField>
    		</band>
    	</detail>
    </jasperReport>
    merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    toujours pas de réponse
    andry.aime, aidez-moi s'il vous plait, je suis bloqué

    idée, proposition d'une autre solution, n'importe, je suis preneur

    merci d'avance...

Discussions similaires

  1. Problème JasperReport (Subreporte)
    Par iliass001 dans le forum iReport
    Réponses: 1
    Dernier message: 30/01/2013, 14h16
  2. [JasperReport] Problème d'aperçu ...
    Par geo-2 dans le forum Jasper
    Réponses: 2
    Dernier message: 25/04/2012, 03h38
  3. Probléme Jasperreport et java sur mac
    Par Tchoupi34 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 18/07/2011, 22h11
  4. Réponses: 20
    Dernier message: 14/06/2008, 14h18
  5. [jsp - jasperreport] - problème génération rapport
    Par karibouxe dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/05/2006, 18h37

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