2011-01-11 1 views
1

Я создал отчет Jasper с помощью инструмента iReport, в котором я зарегистрировал два набора данных, один для проверки данных в таблице, а другой для отображения диаграммы ,Отчеты Jasper: как передать несколько SQL-запросов из Java-программы

Конфигурация прошла успешно с помощью инструмента, и когда я вижу отчет, он дает мне правильные данные. Как всегда, когда я пытаюсь вызвать запросы из Java-программы, я теряюсь. Как я могу справиться с этим? Я могу передать только один запрос с исходным кодом образца, который у меня есть в качестве моей программы.

Пример исходного кода я использую:

  Connection conn = getConnection("172.16.88.171", "1522", "orcl", "audi", "audi"); 
     System.out.println("Got jdbc connection..."); 
     Statement stmt = conn.createStatement(); 
     ResultSet rset = stmt.executeQuery("SELECT DB_USER, OS_USER, USERHOST, STATEMENT_TYPE, SQL_TEXT FROM DBA_FGA_AUDIT_TRAIL"); 


     InputStream input = new FileInputStream(new File("E:\\jasper_reports\\sampleADPTemplate_chart.jrxml")); 
     JasperDesign design = JRXmlLoader.load(input); 
     JasperReport report = JasperCompileManager.compileReport(design); 

     JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), conn); 

     OutputStream output = new FileOutputStream(new File("E:\\jasper_reports\\JasperReporttoPDF.pdf")); 
     JasperExportManager.exportReportToPdfStream(print, output); 

Это проходит только один запрос; Как мне пройти несколько запросов.

Спасибо.

ответ

3

Вам нужно всего лишь сохранить ваши запросы полностью в файле jrxml iReport. Чтобы сделать ваш отчет гибким, используйте параметры. Таким образом вы позволяете пользователю определять необходимые значения во время выполнения.

Здесь вы можете увидеть пример, который получает два значения из двух комбинированных полей, добавляет их в HashMap и передает карту iReport. Эти параметры для этого примера «storeName» и «actionCode» используются для указания значений для запроса, который хранится внутри iReport.

У вас может быть несколько запросов внутри субресурсов.

try { 

    String shopName = jComboBox1.getSelectedItem().toString(); 
    String actionCode = jComboBox2.getSelectedItem().toString(); 

    HashMap<String, Object> map = new HashMap<String, Object>(); 
    map.put("storeName", shopName); 
    map.put("actionCode", actionCode); 

    URL reportFileURL = getClass().getResource("../ireps/AccessCounter.jrxml"); 
    File reportFile = new File(reportFileURL.toURI()); 
    JasperDesign jasperDesign = JRXmlLoader.load(reportFile); 
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map, con); 

    JasperViewer jv = new JasperViewer(jasperPrint); 
    JDialog viewer = new JDialog(this, "Batch Report", true); 
    viewer.setBounds(jv.getBounds()); 
    viewer.getContentPane().add(jv.getContentPane()); 
    viewer.setResizable(true); 
    viewer.setIconImage(jv.getIconImage()); 
    viewer.setVisible(true); 

} catch (JRException exc) { 
    System.out.println(exc.getMessage()); 
} catch (URISyntaxException exs) { 
    System.out.println(exs.getMessage()); 
} 
+0

Спасибо за ваш вход Costis. Я недавно изучал отчеты Джаспера и столкнулся с этой проблемой. Я попытаюсь исследовать больше в этом районе, и ваш этот совет будет очень полезен для меня. Еще раз спасибо. – Abdul

Смежные вопросы