簡體   English   中英

從Java應用程序執行報告時如何指定子數據集查詢

[英]How to specify the subdataset query when executing report from a Java application

我有一個主報告,其中包含一個主查詢和一個包含其自己的Query (帶有subdataset )。

我知道如何指定查詢的主報告,但我不知道是怎么來指定查詢在創建報告我的Java代碼subdatset。

有人可以幫忙嗎?

我的代碼:

public static java.sql.Connection cx = Connexion.SetConOn();

public static void Create report(String Query, String model, String title, String art) {
    try {
        JRDesignQuery jrd = new JRDesignQuery();
        JasperDesign design = JRXmlLoader.load(model);
        jrd.setText(Query);
        design.setQuery(jrd);
        Map map = new HashMap();
        JasperReport etat = JasperCompileManager.compileReport(design);
        JasperPrint print = JasperFillManager.fillReport(etat, map, cx);
        File f = new File("C:\\" + fdg);
        f.mkdir();
        JasperExportManager.exportReportToPdfFile(print, f.getPath() + "\\" + title + ".pdf");
        JasperViewer jv = new JasperViewer(print, false, Locale.FRENCH);

        try {
            java.awt.image.BufferedImage bi = javax.imageio.ImageIO.read(jv.getClass().getResource("/cycloplan/Images/Burn-icon1.png"));
            javax.swing.ImageIcon myImg = new javax.swing.ImageIcon(bi);
            jv.setIconImage(myImg.getImage());

        } catch (java.io.IOException ex) {
            ex.printStackTrace();
        }

        jv.setTitle(title);
        jv.setAlwaysOnTop(true);
        jv.setVisible(true);
    } catch (JRException ex) {
        ex.printStackTrace();
    }
}

JasperDesign類具有幾種訪問子數據集的不同方法。 看看javadoc [link] 我認為以下代碼應該可以設置子數據集查詢,其中subQueryString是您要使用的查詢, datasetName是在JRXML中賦予subdataset元素的名稱。

JRDesignQuery subQuery = new JRDesignQuery();
subQuery.setText(subQueryString);
Map<String, JRDataset> datasetMap = design.getDatasetMap();
JRDesignDataset subDataset = (JRDesignDataset) datasetMap.get(datasetName);
subDataset.setQuery(subQuery);

(*我尚未實際測試此代碼。YMMV)

暫無
暫無

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

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