Sub-relatório no ireport

5 respostas
griciolli

Galera boa tarde, estou batendo cabeça com um sub-relatório, se eu executar os dois relatórios tanto o principal como o subrelatório os dois executam normal, o meu problema está na hora que eu chamo o relatório pela minha classe do sistema, o sistema gera uma Exception: Could not load object from location : c:\meuArquivo.jasper
No subRelatório na aba Subreport Connection/Datasource Expression está como Use connection expression $P{REPORT_CONNECTION} e na aba Subreport (Other) Subreport Expresson Class está setado como java.lang.String e Subreport Expression o endereço onde está o arquivo “c:\meuArquivo.jasper”

import java.util.HashMap; import java.util.Map;

import javax.swing.JOptionPane;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.view.JasperViewer;

public class ImprimirChamados{

private String dir = "C:\\java\\sysChamados\\";
private String relatorio,relatorio1,setTitle;

public ImprimirChamados(){
	
	setTitle	= "Impressão";
	relatorio	= "teste.jrxml";
	Map parameters = new HashMap(); 
					
            try {
JasperDesign design 	= JasperManager.loadXmlDesign(dir + relatorio);
JasperReport jr 		= JasperManager.compileReport(design);

JasperPrint impressao 	= JasperManager.fillReport(jr,parameters,Sistema.con);

JasperViewer jrviewer 	= new JasperViewer(impressao,false);

jrviewer.setTitle(setTitle);

jrviewer.show();
} catch (JRException e) {
JOptionPane.showMessageDialog( null, ""+e.getMessage(), "Aviso",
         JOptionPane.PLAIN_MESSAGE );
}
}

}

5 Respostas

furutani

tenta assim c:\meuArquivo.jasper

griciolli

Rapaz ñ deu certo ainda! se eu colocar assim no Subreport Expression ".//MeuArquivo.jasper " e tentar executar dentro do ireport o relatório funciona legal, agora se eu chamar pela minha aplicação ele gera aquela Exception: Could not load object from location : .//MeuArquivo.jasper

J

Você deve selecionar lá na combo box (Image Expression Class) a opção net.sf. jasperreports.engine.JasperReport e no campo abaixo você coloca a chamada de uma classe do seu projeto que retornará o caminho do seu subrelatório.

Exemplo do Expression no iReport:

br.com.<projeto>.servlet.report.ReportUtils.getReport("report/<diretorio>/<nome_do_report>)

Fonte da classe:

public static JasperReport getReport(String reportName) throws Exception { String reportPath = "/br/com/<projeto>/" + reportName + ".jasper"; InputStream stream = ReportUtils.class.getResourceAsStream(reportPath); if(stream==null){ throw new Exception("Relatório não encontrado: " + reportPath); } JasperReport report = (JasperReport) JRLoader.loadObject(stream); return report; }

griciolli

Bom dia julianostr, vou te amolar + um pouco, eu vi que o exemplo que vc posto aqui é referente para aplicação j2ee, a aplicação que eu to mechendo é j2sdk, muda alguma coisa? []´s

J

Ops, aqui no guj tem um tópico sobre isso, veja se pode ajudar você pois ainda não passei por essa situação.

http://www.guj.com.br/posts/list/2254.java

Criado 14 de setembro de 2006
Ultima resposta 15 de set. de 2006
Respostas 5
Participantes 3