簡體   English   中英

Jasper Reports:如何從Java程序傳遞多個SQL查詢

[英]Jasper Reports: How to pass multiple SQL queries from a Java Program

我使用iReport工具構造了一個Jasper Report,在其中我注冊了兩個數據集,一個用於對表中的數據進行插補,另一個用於顯示圖表。

使用該工具成功完成了配置,當我看到報告時,它為我提供了正確的數據。 但是,當我嘗試從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);

這只會傳遞一個查詢; 我該如何傳遞多個查詢。

謝謝。

您只需要將查詢完全存儲在iReport jrxml文件中。 為了使您的報告更靈活,請使用參數。 這樣,您允許用戶在運行時定義所需的值。

在這里,您可以看到一個示例,該示例從兩個組合框中獲取兩個值,然后將它們添加到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());
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM