iReport + Jasper Subrelatório [RESOLVIDO]

4 respostas
A

Olá pessoal.
Estou desenvolvendo um relatório que possui um subrelatório.
No ireport eu adicionei um elemento “subreport tool"
Na aba Subreport coloquei ((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).dataSource(”/report/data/file/boleto")
e na aba Subreport (Other) adicionei a expressão “boleto_report.jasper”.

Bem até ai tudo bem no iReport ele funciona perfeitamente, mas quando fui integrar com o meu sistema ele não consegue achar o subrelatório e exibe este erro.

net.sf.jasperreports.engine.JRException: Could not load object from location : boleto_report.jasper

Bem o parametro $P{REPORT_DATA_SOURCE} já é default do ireport, não fui eu que criei. Eu pensei em pasar ele por parametro pela aplicação mas não sei como.
Alguém sabe o que estou fazendo de errado ou o que estou esquecendo de fazer?
Segue meu código.

public File gerarRelatorio(String pathContext, String pathDestination,
			String imageParam, String report) {

		ByteArrayInputStream bais = new ByteArrayInputStream(XML.getBytes());
		JRExporter exporter = null;
		try {


			Map<Object, Object> map = new HashMap<Object, Object>();
			map.put("dataatual", new Date());
			map.put("imagem", imageParam);

			
			JRXmlDataSource jrxmlds = null;
			if (report.equals("boleto")) {
				jrxmlds = new JRXmlDataSource(bais, CAMINHO_XPATH_BOLETO);
			} else {
				jrxmlds = new JRXmlDataSource(bais, CAMINHO_XPATH_NF);
				

			}

			JasperPrint print = JasperFillManager.fillReport(pathContext, map,
					jrxmlds);

			exporter = new JRPdfExporter();

			exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
					pathDestination);

			exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);

			exporter.exportReport();

			File file = new File(pathDestination);
			return file;

		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

4 Respostas

R

Adilson.acho que você precisa passar o caminho dos sub-reports como parametro:

parameters.put("SUBREPORT_DIR",  ctx.getRealPath("/relatorios/")+File.separator);
A

raf4ever:
Adilson.acho que você precisa passar o caminho dos sub-reports como parametro:

parameters.put("SUBREPORT_DIR", ctx.getRealPath("/relatorios/")+File.separator);

Olá raf4ever,

eu adicionei esse parametro “SUBREPORT_DIR” no meu map porém continua dando o mesmo erro. Esse parametro eu tenho que criar no iReport ou ele é default?

A

Alguém sabe como resolver isto ou alguma outra forma de resolver esse problema?

A

Descobri qual era o problema. Na verdade não tinha que add nenhum parametro.
Era necessário apenas colocar o subrelatório e sua imagem dentro da pasta src do projeto, é nessa pasta que o relatório procura seus subrelatórios.

Criado 19 de outubro de 2011
Ultima resposta 19 de out. de 2011
Respostas 4
Participantes 2