2013-07-21 4 views
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()); 

У меня есть ошибки сказать, что документ не будет иметь никаких страниц.

Это мой первый раз, потому что раньше я просто генерировал отчет без определенного.

Любой может помочь?

+0

Как выглядит ваш .jrxml-файл? Этот файл управляет макетом отчета. –

+0

Возможно, стоит посмотреть и убедиться, что тип данных даты - это дата, а не строка или что-то еще. –

ответ

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'"