如何在从Java应用程序执行报表时指定子数据集查询
我有一个主报表,其中有一个主查询和一个表(带有子数据集),该表有自己的查询 我知道如何为主报表指定查询,但我不知道如何在Java创建报表代码中为子数据集指定查询 有人能帮忙吗 我的代码:如何在从Java应用程序执行报表时指定子数据集查询,java,dataset,jasper-reports,report,Java,Dataset,Jasper Reports,Report,我有一个主报表,其中有一个主查询和一个表(带有子数据集),该表有自己的查询 我知道如何为主报表指定查询,但我不知道如何在Java创建报表代码中为子数据集指定查询 有人能帮忙吗 我的代码: public static java.sql.Connection cx = Connexion.SetConOn(); public static void Create report(String Query, String model, String title, String art) { t
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。我认为下面的代码应该可以用来设置子数据集查询,其中
subQueryString
是您想要使用的查询,datasetName
是JRXML中给定给子数据集元素的名称
JRDesignQuery subQuery = new JRDesignQuery();
subQuery.setText(subQueryString);
Map<String, JRDataset> datasetMap = design.getDatasetMap();
JRDesignDataset subDataset = (JRDesignDataset) datasetMap.get(datasetName);
subDataset.setQuery(subQuery);
JRDesignQuery子查询=新建JRDesignQuery();
setText(subQueryString);
Map datasetMap=design.getDatasetMap();
JRDesignDataset子数据集=(JRDesignDataset)datasetMap.get(datasetName);
setQuery(子查询);
(*我还没有实际测试过这个代码.YMMV)JasperDesign类有几种不同的方法来访问子数据集;看看javadoc。我认为下面的代码应该可以用来设置子数据集查询,其中
subQueryString
是您想要使用的查询,datasetName
是JRXML中给定给子数据集元素的名称
JRDesignQuery subQuery = new JRDesignQuery();
subQuery.setText(subQueryString);
Map<String, JRDataset> datasetMap = design.getDatasetMap();
JRDesignDataset subDataset = (JRDesignDataset) datasetMap.get(datasetName);
subDataset.setQuery(subQuery);
JRDesignQuery子查询=新建JRDesignQuery();
setText(subQueryString);
Map datasetMap=design.getDatasetMap();
JRDesignDataset子数据集=(JRDesignDataset)datasetMap.get(datasetName);
setQuery(子查询);
(*我还没有实际测试这段代码。YMMV)