Como chamar Relatório Ireport passando valores dos parâmetros na aplicação java

13 respostas Resolvido
ireportjava
L

como faço para chamar um relatório ireport passando os paramentos na aplicação ?

estou utilizando o JPA para conexão com o banco.

estou conseguindo chamar o relatório, mas não estou conseguindo passar os parâmetros.


código chamar relatório

String caminho = new File("./Relatorios/Relatorio_Funcionario/Relatorio_Funcionario_total.jrxml").getAbsolutePath();
            JasperReport relatorio = JasperCompileManager.compileReport(caminho);
            JRBeanCollectionDataSource dados = new JRBeanCollectionDataSource(list, false);
            JasperPrint print = JasperFillManager.fillReport(relatorio, null, dados);
            JasperViewer viw = new JasperViewer(print, false);
             viw.setVisible(true);

13 Respostas

D

ola,

segue um exemplo, crie um map e passe os valores

Map <String, String> parametros = new HashMap <String, String> ();	
	parametros.put("modulo", form.getModulo());
	parametros.put("data", Utils.obterDataAtual());
	parametros.put("hora", Utils.obterHoraAtual());

//Nesta linha que voce esta passando null, passe o parametro

JasperPrint print = JasperFillManager.fillReport(relatorio, null, dados);

ficando assim

JasperPrint print = JasperFillManager.fillReport(relatorio, parametros, dados);

L

Fiz da forma que você disse mas gera um erro nessa linha

JasperPrint print = JasperFillManager.fillReport(relatorio, parametros, dados);

erro:

Exception in thread “AWT-EventQueue-0” java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: net.sf.jasperreports.engine.JasperFillManager.fillReport

D

Como ficou seu código?

L

String departamento = String.valueOf(jComboBox1.getSelectedItem());

try {
         
            
        Map <String, String> parametros = new HashMap <String, String> ();	
        parametros.put("Departamento", departamento);
      
        String caminho = new File("./Relatorios/Relatorio_Funcionario/Relatorio_Funcionario_total.jrxml").getAbsolutePath();
        
        JasperReport relatorio = JasperCompileManager.compileReport(caminho);
              
        JRBeanCollectionDataSource dados = new JRBeanCollectionDataSource(list, false);
        
        JasperPrint print = JasperFillManager.fillReport(relatorio,parametros , dados);
        
        JasperViewer viw = new JasperViewer(print, false);
        
         viw.setVisible(true);
    
            
        } catch (JRException ex) {
        Logger.getLogger(Cad_Funcionario.class.getName()).log(Level.SEVERE, null, ex);
D

tenta com isso, estou usando assim

JasperReport jasperReport = (JasperReport) JRLoader.loadObject(caminho);

no lugar desse

JasperReport relatorio = JasperCompileManager.compileReport(caminho);
D

Map <String, String> parametros = new HashMap <String, String> ();
parametros.put(“Departamento”, departamento);

InputStream caminho = new File("./Relatorios/Relatorio_Funcionario/Relatorio_Funcionario_total.jrxml").getAbsolutePath();

    JasperReport relatorio = (JasperReport) JRLoader.loadObject(caminho);

    JRBeanCollectionDataSource dados = new JRBeanCollectionDataSource(list, false);

    JasperPrint print = JasperFillManager.fillReport(relatorio,parametros , dados);

    JasperViewer viw = new JasperViewer(print, false);

     viw.setVisible(true);
L

Ta gerando erro no InputStream

Uncompilable source code - incompatible types: java.lang.String cannot be converted to java.io.InputStream

olha como ficou meu código

Map parametros = new HashMap ();
parametros.put(“Departamento”, “smas”);

InputStream caminho = new File("./Relatorios/Relatorio_Funcionario/Relatorio_Funcionario_total.jrxml").getAbsolutePath();
        JasperReport relatorio = (JasperReport) JRLoader.loadObject(caminho);
        JRBeanCollectionDataSource dados = new JRBeanCollectionDataSource(list, false);
        JasperPrint print = JasperFillManager.fillReport(relatorio, parametros, dados);
        JasperViewer viw = new JasperViewer(print, false);
         viw.setVisible(true);
D

veja se o caminho esta correto

L

sim esta correto

o netbeans pede pra converter InputStream para String

e quando coloco com String da Erro nessa linha

JasperReport relatorio = (JasperReport) JRLoader.loadObject(caminho);

D
InputStream jasperFile  =  getServlet().getServletContext().getResourceAsStream("/componentes/jasperReport/meuRelatorio.jasper");
JRBeanCollectionDataSource jrds = new JRBeanCollectionDataSource(form.getListaSaldoContabil());
	Map<String, String> parametros = new HashMap<String, String>();	
	parametros.put("modulo", "58885");
	parametros.put("data","10/02/2017");
	parametros.put("hora", "14:35")
	
	JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);  
	JasperPrint jPrint = JasperFillManager.fillReport(jasperReport , parametros, jrds);
	JasperExportManager.exportReportToPdf(jPrint);

O meu esta assim

L

meu parceiro acho que não informei la em mas minha aplicação e desktop

L

acho que por isso o código não ta dando certo

D
Solucao aceita

deve ser, essa solução eu fiz para web

Criado 30 de maio de 2017
Ultima resposta 30 de mai. de 2017
Respostas 13
Participantes 2