2016-01-29 56 views
0

我在德比數據庫 上有日期參數之間的報告,並且在通過兩個文本字段發送日期以運行i 以獲得低於引用錯誤消息時,我獲得了以下消息。將日期參數傳遞給碧玉報告時如何解決ClassCastException?

在異常線程 「AWT-EventQueue的-0」 java.lang.ClassCastException: java.lang.String中不能轉換到java.util.Date在 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter .setDate(JRJdbcQueryExecuter.java:615)

我的代碼來調用碧玉報告是在這裏:

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); 
    }  
} 
+0

那麼你的問題是什麼?是關於Jasper,SQL還是日期時間處理? Stack Exchange對於特定的狹義焦點問題最適合。請修改不必要的細節。 –

+0

我得到了錯誤信息的日期intered你的我的文本文件 –

+0

@Basil無法運行報告由於日期參數錯誤,因爲每個錯誤消息我堅持 –

回答

2

你有不同類參數之間通過了nd在jrxml中的定義。

jTfdate.getText()正在恢復java.lang.String

類型的對象在JRXML你有參數

<parameter name="fdate" class="java.util.Date"> 
    <defaultValueExpression><![CDATA[""]]></defaultValueExpression> 
</parameter> 

解決方案的這個定義,在參數映射傳遞java.util.Date對象。

param1.put("fdate",new SimpleDateFormat("yourPattern").parse(jTfdate.getText())); 

凡圖案,"yourPattern"應對應於解析的文本見SimpleDateFormat pattern's

如何捕捉ParseException並設置默認值,我給你。

+0

以上我把getdate而不是gettext rertieving日期選擇器從而解決問題。 –