Search code examples
javajasper-reports

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


I'm trying to display data between two dates through Jasper report and these are my codes:

    String date1=jDateChooser1.getDateFormatString();
    String date2=jDateChooser2.getDateFormatString();
    try {

        Connection conn = null;

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
    }

    String url = "jdbc:sqlserver://localhost:1433;databaseName=bradb";
    Connection conn = null;
    try {
        conn = DriverManager.getConnection(url, "sa", "oraclee");
    } catch (SQLException ex) {
        Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
    }

    JasperDesign jd = null;
    try {
        jd = JRXmlLoader.load("D:\\NetBeansProjects\\bra\\src\\facilitiReport.jrxml");
    } catch (JRException ex) {
        Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
    }

    String sql="SELECT * FROM facilitiTable WHERE facilitiDate BETWEEN='" + date1+ "' AND '" + date2+ "' ";
    JRDesignQuery newq=new JRDesignQuery();
    newq.setText(sql);

    jd.setQuery(newq);
    JasperReport jr = null;
    try {
        jr = JasperCompileManager.compileReport(jd);

    } catch (JRException ex) {
        Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
    }

    JasperPrint jp = null;
    try {
        jp = JasperFillManager.fillReport(jr, null, conn);
    } catch (JRException ex) {
        Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
    }

    JasperViewer.viewReport(jp);
    try {

            conn.close();

        } catch (SQLException ex) {
            Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
        }

the error that appears,is:

net.sf.jasperreports.engine.JRException: Error executing SQL statement for : null at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:240) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:240) at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1087) at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:668) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1281) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:900) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) 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)


Solution

  • done,, the error were in these two lines:

    String date1=jDateChooser1.getDateFormatString();
    String date2=jDateChooser2.getDateFormatString();
    

    and final codes are:

    String date1 = ((JTextField) jDateChooser1.getDateEditor().getUiComponent()).getText();
        String date2 = ((JTextField) jDateChooser2.getDateEditor().getUiComponent()).getText();
        try {
    
            Connection conn = null;
    
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
        }
    
        String url = "jdbc:sqlserver://localhost:1433;databaseName=bradb";
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url, "sa", "oraclee");
        } catch (SQLException ex) {
            Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
        }
    
        JasperDesign jd = null;
        try {
            jd = JRXmlLoader.load("E:\\bra\\src\\facilitiReport2.jrxml");
        } catch (JRException ex) {
            Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
        }
        String sql = "SELECT * FROM facilitiTable WHERE deptDate BETWEEN '" + date1 + "' AND '" + date2 + "' ";
        JRDesignQuery newq = new JRDesignQuery();
        newq.setText(sql);
    
        jd.setQuery(newq);
        JasperReport jr = null;
        try {
            jr = JasperCompileManager.compileReport(jd);
    
        } catch (JRException ex) {
            Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
        }
    
        JasperPrint jp = null;
        try {
            jp = JasperFillManager.fillReport(jr, null, conn);
        } catch (JRException ex) {
            Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
        }
    
        JasperViewer.viewReport(jp);
        try {
            conn.close();
    
        } catch (SQLException ex) {
            Logger.getLogger(facilitiReports.class.getName()).log(Level.SEVERE, null, ex);
        }