Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA][JasperReports] net.sf.jasperreports.engine.JRException: Error executing SQL...



    Prima di postare vi dico che le ho provate tutte... Ho trovato anche un thread su questo forum proprio simile a questo, ma non sono riuscito comunque a risolvere il problema.

    Googlando sull'errore ho trovato che pare possa dipendere da come ho stabilito la connessione... Ma ho provato diverse volte a ricreare il file .jrxml attraverso la connessione wizard e non capisco dove posso sbagliare. Anzi, nell'anteprima di iReport il report viene compilato egregiamente...

    Nello screenshot che vi ho postato ci sono le librerie JasperReports del progetto, il codice della classe test e l'errore in fase di runtime, che è questo:

    codice:
    ...net.sf.jasperreports.engine.JRException: Error executing SQL statement for : null

    Qualche suggerimento?

  2. #2
    [edit] Volevo aggiungere che se visualizzo l'anteprima del report da iReport lo vedo benissimo...

    È dalla classe .java che non riesco a produrre il PDF.

  3. #3
    Che rinco... non avevo scritto correttamente l'URL del Database...

    Corretto quell'errore però ne viene fuori uno dovuto ad una presunta operazione di casting:

    codice:
    Exception in thread "main" java.lang.ClassCastException: net.sf.jasperreports.engine.JasperReport cannot be cast to net.sf.jasperreports.engine.JasperPrint
     	at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:97)
     	at jtablerowcolortest.MyReportViewer.main(MyReportViewer.java:41)

  4. #4
    codice:
     import java.sql.Connection;
     import java.sql.DriverManager;
     import java.sql.SQLException; import java.util.HashMap;
     import java.util.Map;
     import net.sf.jasperreports.engine.*;
     import net.sf.jasperreports.engine.design.JasperDesign;
     import net.sf.jasperreports.engine.xml.JRXmlLoader;
     import net.sf.jasperreports.view.JasperViewer;
     
     public class MyReportViewer {
     
         public static String JASPER_REPORT_FOLDER   = "/home/fabio/myJava/JTableRowColorTest/src/jtablerowcolortest/";
         public static String JASPER_FILENAME    = "report1";
         public static String DRIVER       = "com.mysql.jdbc.Driver";
         public static String DB_URL       = "jdbc:mysql://localhost:3306/javatest";
         public static String DB_NAME       = "javatest";
         public static String DB_USERNAME     = "xxxxx";
         public static String DB_PASSWORD     = "xxxxx";
     
         public MyReportViewer() throws JRException, ClassNotFoundException, SQLException {
    
             //caricamento file JRXML
             JasperDesign jasperDesign = JRXmlLoader.load(JASPER_REPORT_FOLDER + JASPER_FILENAME + ".jrxml");
             //compilazione del file e generazione del file JASPER
             JasperCompileManager.compileReportToFile(jasperDesign, JASPER_REPORT_FOLDER + JASPER_FILENAME + ".jasper");
     
             //inizializzazione connessione al database
             Class.forName(DRIVER);
             Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
             
             Map param = new HashMap();
             
             //rendering e generazione del file PDF
             JasperPrint jp = JasperFillManager.fillReport(JASPER_REPORT_FOLDER + JASPER_FILENAME + ".jasper", param, conn);
             
             //  Con questa linea ia creazione del PDF mi andava sempre in errore...
             //JasperExportManager.exportReportToPdfFile(JASPER_REPORT_FOLDER + JASPER_FILENAME + ".jasper", JASPER_REPORT_FOLDER + "report1.pdf");
    
             //...così l'ho sostituita con questa che mi fa vedere l'anteprima...
             JasperViewer viewer = new JasperViewer(jp, true);
    
             viewer.setVisible(true);
             
         }
     }

    Poi nel codice richiamo la mia classe MyReportViewer per vedere l'anteprima...

    codice:
    try {
        MyReportViewer my_rep = new MyReportViewer();
    
        } catch (JRException ex) {Logger.getLogger(JTableRowColorTest.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {Logger.getLogger(JTableRowColorTest.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {Logger.getLogger(JTableRowColorTest.class.getName()).log(Level.SEVERE, null, ex);
    }

    Domanda:

    - Perché quando chiudo la finestra dell'Anteprima-Viewer mi si chiude l'applicazione completa?

    - C'è un modo comunque per creare direttamente il file .pdf?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.