[RESOLVIDO]Problemas com o JasperReport

4 respostas
Alexandre_Martins

Boa Tarde amigos, estou com um problema em uma aplicação onde estou tentando gerar um relatório usando o iReport e o JasperReport… porém a aplicação não está gerando o meu arquivo pdf… estou usando a versão 4.1.1… se alguém souber onde esta meu erro me dê uma ajudinha…

Connection con = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://localhost:3306/cinema?useUnicode=true&characterEncoding=Cp1252","root","coti");

                StringBuilder sb = new StringBuilder();
                sb.append("select c.idCinema, c.id_Endereco, c.razaoSocial, c.cnpj, c.telefone, ");
                sb.append("e.logradouro, e.numero, e.complemento, e.cep, e.bairro, e.cidade, e.estado ");
                sb.append("from cinema c inner join endereco e ");
                sb.append("on c.id_Endereco = e.idEndereco ");
                sb.append("WHERE situacao=1");

                PreparedStatement stmt = con.prepareStatement(sb.toString());

                ResultSet rs=stmt.executeQuery();
                
                
                JRResultSetDataSource jrrs= new JRResultSetDataSource(rs);
                
                JasperDesign jasperDesign=null;
                Map parameters = new HashMap();
                parameters.put("vazio","vazio"); //nao  passagem de dado

                jasperDesign = JRXmlLoader.load("C:\\Users\\DELL\\Documents\\NetBeansProjects\\ProjetoCinema\\relatorios\\relcinemas.jrxml");
                JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, jrrs);

                response.reset();
                response.setHeader("Window-target","blank");
                response.setContentType("application/pdf");
                OutputStream outs = response.getOutputStream();
                JasperExportManager.exportReportToPdfStream(jasperPrint, outs);

                outs.flush();
                outs.close();

            } catch (JRException e) {
                e.printStackTrace();
                System.exit(1);
            }catch (Exception exc){
                request.setAttribute("mensagem", exc.getMessage());
            } finally {
                out.close();
            }

:?

Grato!

4 Respostas

A

cara,

se nao me engano, vc tem q fazer um load no .jasper e nao no .jrxml.
trabalhe ja com .jasper, vc nao precisa compilar novamente nao, o ireport ja faz isso pra vc.

t+

Alexandre_Martins

alissonvla:
cara,

se nao me engano, vc tem q fazer um load no .jasper e nao no .jrxml.
trabalhe ja com .jasper, vc nao precisa compilar novamente nao, o ireport ja faz isso pra vc.

t+

então, seguindo sua sugestão tentei da seguinte maneira e continuo sem obter sucesso.

Connection con = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://localhost:3306/cinema?useUnicode=true&characterEncoding=Cp1252","root","coti");

                StringBuilder sb = new StringBuilder();
                sb.append("select c.idCinema, c.id_Endereco, c.razaoSocial, c.cnpj, c.telefone, ");
                sb.append("e.logradouro, e.numero, e.complemento, e.cep, e.bairro, e.cidade, e.estado ");
                sb.append("from cinema c inner join endereco e ");
                sb.append("on c.id_Endereco = e.idEndereco ");
                sb.append("WHERE situacao=1");

                PreparedStatement stmt = con.prepareStatement(sb.toString());

                ResultSet rs=stmt.executeQuery();
                
                
                JRResultSetDataSource jrrs= new JRResultSetDataSource(rs);
                
                JasperDesign jasperDesign=null;
                Map parameters = new HashMap();
                parameters.put("vazio","vazio"); //nao há passagem de dado
                String file = "C:\\Users\\DELL\\Documents\\NetBeansProjects\\ProjetoCinema\\relatorios\\relcinemas.jasper";

                JasperPrint jasperPrint = JasperFillManager.fillReport(file, parameters, jrrs);

                JRExporter exporter = new JRPdfExporter();

                String outFileName = "cinemas.pdf";

                exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileName);
                exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

                exporter.exportReport();

            } catch (JRException e) {
                e.printStackTrace();
                System.exit(1);
            }catch (Exception exc){
                request.setAttribute("mensagem", exc.getMessage());
            } finally {
                out.close();
            }
A

cara,

faz assim e ve se funciona

Connection con = null;  
try {  
	Class.forName("com.mysql.jdbc.Driver");  
	con = DriverManager.getConnection("jdbc:mysql://localhost:3306/cinema?useUnicode=true&characterEncoding=Cp1252","root","coti");  

	StringBuilder sb = new StringBuilder();  
	sb.append("select c.idCinema, c.id_Endereco, c.razaoSocial, c.cnpj, c.telefone, ");  
	sb.append("e.logradouro, e.numero, e.complemento, e.cep, e.bairro, e.cidade, e.estado ");  
	sb.append("from cinema c inner join endereco e ");  
	sb.append("on c.id_Endereco = e.idEndereco ");  
	sb.append("WHERE situacao=1");  

	PreparedStatement stmt = con.prepareStatement(sb.toString());  

	ResultSet rs=stmt.executeQuery();  
	  
	JRResultSetDataSource jrrs= new JRResultSetDataSource(rs);
	String file = "C:\\Users\\DELL\\Documents\\NetBeansProjects\\ProjetoCinema\\relatorios\\relcinemas.jasper";  

	JasperPrint jasperPrint = JasperFillManager.fillReport(file, new HashMap(), jrrs);  
	JasperExportManager.exportReportToPdf(jasperPrint, "c:\\teste\\cinemas.pdf");  
} catch (JRException e) {  
	e.printStackTrace();  
	System.exit(1);  
}catch (Exception exc){  
	request.setAttribute("mensagem", exc.getMessage());  
		exc.printStackTrace();
} finally {  
	try{
		if(con != null){
			con.close();  
		}
	}catch(Exception e){
		e.printStackTrace();
	}
}

t+

Alexandre_Martins

Só para constar,

Consegui resolver com o seguinte tutorial:

Valeu pela ajuda Alisson !

Criado 29 de outubro de 2011
Ultima resposta 14 de nov. de 2011
Respostas 4
Participantes 2