我有一个生成pdf报告的方法,将List作为数据源发送并保存在给定目录中,现在有必要使用子报告,但我无法理解如何将List作为数据传递此子报告的来源,然后将其显示在主报告中。
这是我生成主报告的方法:
public boolean generateReport(List list, int numeroRelatorio, String nomePrestador, String dataSistema) {
JasperReport report = null;
InputStream image = this.getClass().getResourceAsStream("/br/com/xml/relatorio/LOGO.png");
filtro.put("Image", image);
try {
InputStream inputStreamReal = getClass().getResourceAsStream("/br/com/xml/relatorio/MainReport.jrxml");
report = JasperCompileManager.compileReport(inputStreamReal);
} catch (JRException ex) {
Logger.getLogger(frmPegaXml.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, "Erro ao pegar arquivos!", "ERRO!", JOptionPane.ERROR_MESSAGE);
}
try {
JasperPrint print = JasperFillManager.fillReport(report, filtro, new JRBeanCollectionDataSource(list));
JasperExportManager.exportReportToPdfFile(print,
"C:/Demonstrativos/" + dataSistema + "/" + nomePrestador + "_" + dataSistema + "_" + numeroRelatorio + ".pdf");
return true;
} catch (JRException ex) {
Logger.getLogger(frmPegaXml.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, "Erro ao Gerar relatório, verifique se nenhum arquivo está aberto ou se o nome está correto!\n" + ex, "ERRO!", JOptionPane.ERROR_MESSAGE);
return false;
}
}
我试过这种方式,但它没有工作:
filtro.put("listaDados", list);
filtro.put("localizarRel", "src/br/com/xml/relatorio/subRelatorio.jasper");
那是例外:
15/05/21 10:36:25 ERROR fill.JRFillSubreport: Fill 1: exception
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : dataRealizacao
这个Bean dataRealizacao是我的子报告的一部分,有谁知道我可能会失踪的地方?
更新问题: 课程程序:
public class Procedimentos {
private String numLote;
private String dataRealizacao;
private String descriçãoServico;
private String codTab;
private String codigoServico;
private String quantidadeExecutada;
private BigDecimal valorProcessado;
private BigDecimal valorLiberado;
private BigDecimal valorGlosa;
private String codigoGlosa;
private String sequenciaGuiaProcedimento;
private String sequenciaGuiaDados;
private String nomeBeneficiario;
private String valorLiberadoGuia;
...
我的子报告:
我的主报告中有2个参数:
listaDados (java.util.List)
和localizarRel (java.lang.String)
,表达式默认=" C: \ Users \ Adiego \ JaspersoftWorkspace \ MyReports \ subRelatorio.jasper"
在我关于子报告属性的主要报告中,我这样做: