0

我正在使用iReport 4.7.0生成报告

我想通过在 2 天之间搜索来生成报告,例如:从何时到何时。

这是我的代码:

java.util.Date utilStartDate = date1.getDate();
java.sql.Date start = new java.sql.Date(utilStartDate.getTime());

java.util.Date utilStartDate2 = date2.getDate();
java.sql.Date end = new java.sql.Date(utilStartDate2.getTime());

try {
    JasperDesign jd = JRXmlLoader.load("C:\\Users\\admin\\Desktop\\Sales Report.jrxml");
    String sql = "Select * from Order1 Where Order_Date between "+start+" and "+end+"";

    JRDesignQuery newQuery = new JRDesignQuery();
    newQuery.setText(sql);
    jd.setQuery(newQuery);
    JasperReport jr = JasperCompileManager.compileReport(jd);
    JasperPrint jp = JasperFillManager.fillReport(jr,null,conn);
    JasperViewer.viewReport(jp,false);
} catch(Exception e) {
    JOptionPane.showMessageDialog(null,e.getMessage());

我有错误说该文档没有页面。

这是我第一次这样做,因为以前我只是在没有具体内容的情况下生成报告。

有什么可以帮忙的吗?

4

1 回答 1

0

我认为您需要在日期周围使用撇号。否则 dbms 可能会认为它是算术运算而不是日期。

换句话说,你可能有这个:

"Select * from Order1 Where Order_Date between 2005-06-25 and 2008-04-13"

因此 2005 - 06 - 25 = 1974 和 2008 - 04 - 13 = 1991 导致:

"Select * from Order1 Where Order_Date between 1974 and 1991"

相反,您想要的是:

"Select * from Order1 Where Order_Date between '2005-06-25' and '2008-04-13'"
于 2013-07-23T17:08:16.853 回答