Bonjour a tous je suis débutant dans l'utilisation de jasper report j'essaie depuis peux d'exécuter un rapport dans mon code java que voici:
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package rapports;
import java.io.File;
import java.net.URL;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
 
/**
 * Petite classe utilitaire pour lancer une impression d'un état JasperReport
 * On suppose que cette classe est placée avec les différents rapports dans le package "rapports".
 */
public class ImprJasper {
    /**
     * @param nomDuRapport Le nom du rapport sans son extension .jasper
     * @param conn La connexion java.sql à la base de donnée
     * @param formatSortie "Aperçu","Imprimante","Tableur","HTML","PDF"
     * @param params Map des différents paramètres passés au rapport (ID_CLIENT par exemple) pour utilisation par le rapport
     * @param cheminFichierDeSortie chemin complet (avec extension) du fichier de sortie (HTML, Tableur, PDF). Indiquer null si Aperçu ou Imprimante
     */
    public ImprJasper(String nomDuRapport, Connection conn, String formatSortie, Map<String, Object> params, String cheminFichierDeSortie){
 
        params.put("SUBREPORT_DIR", "rapports/");       //  on suppose que le package dans lequel se trouve le rapport est nommé "rapports"
 
        URL cheminRapport = getClass().getResource(nomDuRapport + ".jasper");
 
        try {
            // chargement du rapport :
            JasperReport jasperReport = (JasperReport)JRLoader.loadObject(cheminRapport);
 
            // suppression de la pagination si format HTML (sinon on est au format A4 !!!)
            if (formatSortie.equals("HTML")) {
                params.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
            }
 
            // calcul et mise en page du rapport avec utilisation des paramètres et de la connexion
            // l'objet jasperPrint contient le résultat
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, conn);
 
            // si le format de sortie est "Aperçu", le résultat est placé dans un JFrame (JasperViewer) qui fait un EXIT_ON_CLOSE par défaut
            // il faut donc passer le paramètre false pour empêcher l'arrêt de l'application après un aperçu
            if (formatSortie.equals("Aperçu")) {
                final JasperViewer Jv = new JasperViewer(jasperPrint,false); // le false empèche l'arrêt de l'application
            }
 
            if (formatSortie.equals("PDF")) {
                JasperExportManager.exportReportToPdfFile(jasperPrint, cheminFichierDeSortie);
            }
 
            // pour exporter au format HTML JasperExportManager crée un sous répertoire.
            // en cas de ré-exportation du rapport, il faut supprimer le sous-répertoire sinon ça plante
            if (formatSortie.equals("HTML")) {
                String NomRepHtml = cheminFichierDeSortie.subSequence(0, cheminFichierDeSortie.lastIndexOf(".")) + "_files";
                File RepHtm = new File(NomRepHtml);
                if (RepHtm.exists()) {
                    File[] Fichiers = RepHtm.listFiles();
                    for (File fichier : Fichiers) {
                        fichier.delete();
                    }
                }
                RepHtm.delete();
                JasperExportManager.exportReportToHtmlFile(jasperPrint, cheminFichierDeSortie);
            }            
 
            if (formatSortie.equals("Imprimante")) JasperPrintManager.printReport(jasperPrint,false);
 
            if (formatSortie.equals("Tableur")) {
                JRXlsExporter exporter = new JRXlsExporter();
 
                exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, cheminFichierDeSortie);
                exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
 
                exporter.exportReport();
 
            }
 
        }
 
        catch (JRException ex) {
            ex.printStackTrace();
        }
 
    }
 
 
    public void testImpression() throws SQLException {
 
        // exemple de sortie au format PDF du rapport "interventions" au format PDF pour l'équipement N°123
        String url = "jdbc:mysql://localhost/jasper_database";
        String login = "root";
        String password = "";
        Driver monDriver = new com.mysql.jdbc.Driver();
        DriverManager.registerDriver(monDriver);
        Connection conn = (Connection) DriverManager.getConnection(url, login, password);   
        System.out.println("connexion");
       // Connection conn = .... ;      // la connexion à la base de données
        Map<String, Object> params =  new HashMap<String, Object>();
        params.put("id_equipement",123);
        new ImprJasper("report3", conn, "PDF", params, "d:/kika.pdf");
    }    
    public static void main(String []args) throws SQLException{
        // exemple de sortie au format PDF du rapport "interventions" au format PDF pour l'équipement N°123
        String url = "jdbc:mysql://localhost/jasper_database";
        String login = "root";
        String password = "";
        Driver monDriver = new com.mysql.jdbc.Driver();
        DriverManager.registerDriver(monDriver);
        Connection conn = (Connection) DriverManager.getConnection(url, login, password);   
        System.out.println("connexion");
       // Connection conn = .... ;      // la connexion à la base de données
        Map<String, Object> params =  new HashMap<String, Object>();
        params.put("titre","titre");
        new ImprJasper("report3", conn, "PDF", params, "d:/kika.pdf");
    }
}
voilà l'erreur que j'ai et je n'y comprend rien:
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
connexion
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
	Source text : Nom
	at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203)
	at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
	at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
	at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:966)
	at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:447)
	at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:431)
	at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
	at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:459)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBandNoOverflow(JRVerticalFiller.java:457)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnHeader(JRVerticalFiller.java:502)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:284)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)
	at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:849)
	at rapports.ImprJasper.<init>(ImprJasper.java:52)
	at rapports.ImprJasper.main(ImprJasper.java:128)
Caused by: groovy.lang.MissingPropertyException: No such property: Nom for class: report3_1366055885290_141145
	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:49)
	at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:86)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:239)
	at report3_1366055885290_141145.evaluate(calculator_report3_1366055885290_141145:167)
	at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190)
	... 18 more