Reputation: 159
I have a report with between date parameters on derby database and I have got below message when sending dates through two text fields to run i to got below quote error msg.
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setDate(JRJdbcQueryExecuter.java:615)
My code to call jasper report is here:
public void runREport() {
try {
Connection con1= null;
String Op=jTsubmain_no.getText();
int val = Integer.parseInt((String) Op.trim());
Map param1 = new HashMap();
param1.put("sub_no",val);
param1.put("fdate",jTfdate.getText());
param1.put("ldate",jTldate.getText());
try {
con1= DriverManager.getConnection("jdbc:derby://localhost:1527//accountsdb","accounts","accounts");
} catch (SQLException ex) {
Logger.getLogger(reports.class.getName()).log(Level.SEVERE, null, ex);
}
String jrxmlFileName = "C:/Users/hosam/Documents/NetBeansProjects/Accsys/src/accsys/report2.jrxml";
JasperDesign jasperDesign = JRXmlLoader.load(jrxmlFileName);
JasperReport jasperReport =JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param1, con1);
JasperViewer.viewReport(jasperPrint);
} catch (JRException ex) {
JOptionPane.showMessageDialog( null, ex);
}
}
Upvotes: 0
Views: 1631
Reputation: 21710
You have a different class between parameter passed and definition in jrxml.
jTfdate.getText()
is returning an object of type java.lang.String
in jrxml you have this definition of parameter
<parameter name="fdate" class="java.util.Date">
<defaultValueExpression><![CDATA[""]]></defaultValueExpression>
</parameter>
Solution, pass a java.util.Date
object in your parameter map.
Example
param1.put("fdate",new SimpleDateFormat("yourPattern").parse(jTfdate.getText()));
Where the pattern, "yourPattern"
should correspond to the text parsed see SimpleDateFormat pattern's.
How to catch the ParseException
and set default value, I leave to you.
Upvotes: 2