Como chamar subreport JasperIreport [RESOLVIDO] + EXEMPLO feito por marciofermino
5 respostas
K45T
olá galera, espero que vcs estejam de bom humor hoje.
pois faz dois dias que eu estou a procura dessa solução.
o problema é o seguinte…
eu construi direitinho o relatório no iReport e funciona
mais quando eu chamo pela classe da erro.
a classe que eu chamo o é essa:
publicclassCriaRelatorio{Conexaocon=newConexao();publicCriaRelatorio(){con.conecta();con.executaSQL("select nota.*, cli.* from notafiscaldevenda nota, cliente cli where nota.cliente = cli.codigo");JRResultSetDataSourcejrRS=newJRResultSetDataSource(con.resultSet);try{JasperPrintjasperPrint=JasperFillManager.fillReport("C:/Estoque/Relatorio/ProdutosMaster.jasper",newHashMap(),jrRS);JasperViewer.viewReport(jasperPrint);}catch(Exceptionerro){JOptionPane.showMessageDialog(null,erro);}}publicstaticvoidmain(Stringargs[]){newCriaRelatorio();}}
o relatório imprime mais o subrelatorio não queria saber como enviar os parametros necessários
Amigo vou colocar um exemplo, senão conseguir.. dou curso tb
try{/*CONEX��OCOMOBANCODEDADOSMySql*/Class.forName("com.mysql.jdbc.Driver");ConnectionConectaNoBanco=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/bd","root","");Statementstmt=(Statement)ConectaNoBanco.createStatement();HashMapparameters=newHashMap();parameters.put("","");JasperPrintprint=JasperFillManager.fillReport("C:/x/classic.jasper",parameters,ConectaNoBanco);//newHashMap(),newJRDataSource());//JasperPrintManager.printReport("C:/Arquivos de programas/Programa/Meval/src/Meval/Relatorio/Relatorio_Os.jasper",true);//JasperExportManager.exportReportToPdfFile("C:/Relatorio_Os.jrprint");//JasperViewer.viewReport("C:/Relatorio_Os.pdf",false);JasperViewerjrviewer=newJasperViewer(print,false);jrviewer.setTitle("RELATÓRIO MEVAL - MEC - VALMET LTDA.");//jrviewer.setIconImage(newImageIcon("C:/Arquivos de programas/Programa/Meval/Aplicativos/Icones/MEVAL.png").getImage());jrviewer.setVisible(true);}catch(JRExceptionjre){jre.printStackTrace();JOptionPane.showMessageDialog(null,"ARQUIVO NÃO ENCONTRADO!!!!!!!","FORMULARIO PESQUISA",3);}catch(SQLExceptione){JOptionPane.showMessageDialog(this,"ERRO NO COMANDO SQL"+e.getMessage());}catch(ClassNotFoundExceptione){JOptionPane.showMessageDialog(this,"DRIVE NAO ENCONTRADO");}SUB-RELATORIOStry{Class.forName("com.mysql.jdbc.Driver");ConnectionConectaNoBanco=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/bd","root","");Statementstmt=(Statement)ConectaNoBanco.createStatement();HashMapparameters=newHashMap();parameters.put("SUBREPORT_DIR","c:/X/");JasperPrintprint=JasperFillManager.fillReport("C:/x/classic.jasper",parameters,ConectaNoBanco);//newHashMap(),newJRDataSource());//JasperPrintManager.printReport("C:/Arquivos de programas/Programa/Meval/src/Meval/Relatorio/Relatorio_Os.jasper",true);//JasperExportManager.exportReportToPdfFile("C:/Relatorio_Os.jrprint");//JasperViewer.viewReport("C:/Relatorio_Os.pdf",false);JasperViewerjrviewer=newJasperViewer(print,false);jrviewer.setTitle("RELATÓRIO MEVAL - MEC - VALMET LTDA.");//jrviewer.setIconImage(newImageIcon("C:/Arquivos de programas/Programa/Meval/Aplicativos/Icones/MEVAL.png").getImage());jrviewer.setVisible(true);}catch(JRExceptionjre){jre.printStackTrace();JOptionPane.showMessageDialog(null,"ARQUIVO NÃO ENCONTRADO!!!!!!!","FORMULARIO PESQUISA",3);}catch(SQLExceptione){JOptionPane.showMessageDialog(this,"ERRO NO COMANDO SQL"+e.getMessage());}catch(ClassNotFoundExceptione){JOptionPane.showMessageDialog(this,"DRIVE NAO ENCONTRADO");}
CarlosEduardoDantas
olá… acho que a primeira coisa que precisamos avaliar é se você criou o parametro SUBREPORT_DIR quando fez o sub-relatorio… esse parametro é mto importante pra nao deixar seu relatorio engessado… la no iReport, o valor default dessa parametro pode ser “/” caso o .jasper do subrelatorio esteja no mesmo .jasper do relatorio mestre
feito isso, no seu codigo fonte, o parametro SUBREPORT_DIR será alimentado por:
Opa muito obrigado por me ajudarem.
garanto que não conseguiria sozinho…
mais ainda tenho muitas dúvidas quanto a passar parametros para o xml
por exemplo
no meu subrelátório recebe um parametro do relatório principal (assim te digo)
na query
assim:
<queryString><![CDATA[select * from produtosvendawhere codigoDaVenda = $P{NOTAFISCAL}]]></queryString>
sabendo que $P{NOTAFISCAL} é um parametro do relatório principal
como eu passaria para para o SubRelátório ?