olá
gostaria de saber como faço para chamar pelo java um subrelatorio feito no ireport
o relatorio principal já consegui chamar
quando eu rodo o relatorio pelo ireport funciona
quando eu rodo pelo eclipse funciona
quando eu crio meu jar, com os jasper dentro dele, dae nao funciona
obrigado
Chamar subrelatorio
M
4 Respostas
Marcos, evite as PVTMSG, eu quase nunca as leio.Deu sorte que eu vi.
E quanto ao seu report “não funciona” o quê?Qual a stack que aparece para você?
Qual o caminho que vc tá passando com o seu report(o .jasper)?Vc deixa ele numa pasta só para ele???
M
InputStream is1 = this.getClass().getClassLoader().getResourceAsStream("relatorios/Anuidades.jasper");
InputStream is2 = this.getClass().getClassLoader().getResourceAsStream("relatorios/sub_anuidades.jasper");
HashMap map1 = new HashMap();
map1.put("SUBREPORT_DIR" , aki ) ;
JasperPrint impressao = null;
try {
impressao = JasperFillManager.fillReport( is1 , map1, jrRS1);
} catch (JRException e10) {
JOptionPane.showMessageDialog(null, "Erro 10 ao gerar relatório !\n" + e10.getMessage(),"Operador", JOptionPane.ERROR_MESSAGE);
} catch (Exception e11) {
JOptionPane.showMessageDialog(null, "Erro 11 ao gerar relatório !\n" + e11.getMessage(), "Operador", JOptionPane.ERROR_MESSAGE);
}
if ( !impressao.equals(null) ) {
JasperViewer viewer = new JasperViewer(impressao, false);
viewer.setVisible(true);
}
erro : could not load object from location : java.io … sub_anuidade.jasper
M
RESOLVIDO
URL web = getClass().getResource( "/relatorios/sub_anuidades.jasper" ); // sub
//System.out.println( web );
Connection con1 = Conexao.getConnection();
String arquivo1 = "relatorios/Anuidades.jasper" ;
InputStream is1 = this.getClass().getClassLoader().getResourceAsStream( arquivo1 );
ResultSet rs2 = Conexao.execSQL( " select * from cliente ; " );
JRResultSetDataSource jrRS1 = new JRResultSetDataSource(rs2);
HashMap parametros = new HashMap();
parametros.put("SUBREPORT_DIR" , web.toString() ) ; // is2.toString() ) ;
parametros.put("REPORT_CONNECTION", con1 ) ;
JasperPrint jasperPrint = null ;
try {
jasperPrint = JasperFillManager.fillReport( is1, parametros,jrRS1);
} catch (JRException e) {
e.printStackTrace();
}
JasperViewer jrviewer = new JasperViewer( jasperPrint, true);
jrviewer.setVisible(true);
Legal que vc resolveu.Edita o seu tópico e ponha [RESOLVIDO], assim usuários com o mesmo problema usará esse tópico como referência.Só para citar, naquele caso anterior, para resolver eu passei o WEB-INF junto(que continha a pasta report), ou seja:
…getClass().getResource( “/WEB-INF/reports/Relatorio.jasper” );
Criado 26 de março de 2009
Ultima resposta 27 de mar. de 2009
Respostas 4
Participantes 2