Jasper Report

8 respostas
Gu1

galerinha estou precisando fazer alguns relatórios e estou usando Jasper Report2.0.2 segui um tutorial que o guj fez achei uns codigos fui me virendo mas agora estou com um probleminha.

o codigo que fiz aqui esta dando um erro de nullpointer, sera que por um acaso alguem pode ajudar… vou postar o código aqui…

import java.util.HashMap;
import java.util.Map;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import java.sql.*;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;

public class geraRelatorio extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException{
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        try {
           // carrega o relatório compilado   
           InputStream stream = getServletContext().getResourceAsStream("F:/java_www/gestaosindicato/web/Relatorio_gestao_Sindicato.jasper");   
           JasperReport relatorio = JasperManager.loadReport(stream);   

           // estabelece uma conexão JDBC (seria melhor usar DataSources J2EE)   
           Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");   
           Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=BANCO;","USUARIO","SENHA");   

           Statement stm = con.createStatement();   
           String consultaSQL = "SELECT * FROM RESCISAO";
           ResultSet rs = stm.executeQuery(consultaSQL);   

           // implementação da interface JRDataSource para DataSource ResultSet   
           JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);   
           Map parametros = new HashMap();         

           // executa o relatório   
           JasperPrint impressao = JasperManager.fillReport(relatorio, parametros, jrRS);                         

           JasperManager.printReportToPdfStream(impressao, response.getOutputStream());   
           con.close();   
        } catch (Exception e) {
           throw new ServletException(e);   
        }
    }
}

o erro que esta dando é esse

se alguem puder me ajudar ficarei grato pela ajuda…

8 Respostas

matheuscechito

parece que ele está dando erro na linha 29

eu não conheço esse driver que vc usou, o q eu uso aki é: net.sourceforge.jtds.jdbc.Driver

tenta ai!!!
t+

Gu1

Matheuscechito valew mas não é isso não esse driver é o que a microsoft oferece para conectar ao sql server, eu uso ele ja faz algum tempo…
Valew pela ajuda…

matheuscechito

em que linha dá o nullpointer?

tenta outra coisa ae: mudar o setContentType para “application/pdf”

wamarra
Olá Gu, Cara, tive muito problemas com exibição dos relatórios. Só consegui da seguinte maneira:
try {     
           // estabelece uma conexão JDBC (seria melhor usar DataSources J2EE)     
           Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");     
           Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=BANCO;","USUARIO","SENHA");     
  
           Statement stm = con.createStatement();     
           String consultaSQL = "SELECT * FROM RESCISAO";   
           ResultSet rs = stm.executeQuery(consultaSQL);  
   
           /* implementação da interface JRDataSource para DataSource ResultSet */
           JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
           
           /* HashMap de parametros utilizados no relatório. Sempre instanciados */ 
           Map parameters = new HashMap();
           // parameters.put("COLUNA", valor);
            
           /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
           JasperFillManager.fillReportToFile( "Relatorio_gestao_Sindicato.jasper", parameters, jrRS );

           /* Exporta para o formato PDF */
           JasperExportManager.exportReportToPdfFile( "Relatorio_gestao_Sindicato.jrprint" );

           /* Visualiza o relatório em formato PDF */
           JasperViewer.viewReport( "Relatorio_gestao_Sindicato.jrprint", false, false );

           con.close();     
} catch (Exception e) {   
           throw new ServletException(e);     
}

Lembrando que deve colocar o relatório .jasper dentro da pasta do projeto.
Em pdf eu não coseguir carregar o relatório, então eu o carreguei pelo viewer do Jasper mesmo.
Comigo funcionou,
talvez funcione contigo tambem.

Espero ter ajudado
T+

Gu1

Valew Wesley fiz como vc postou aqui e deu certo a unica coisa que tive mudar foi caminho do arquivo pois tive que especificar onde ele estava…

muito obrigado…

wamarra

Gu:
Valew Wesley fiz como vc postou aqui e deu certo a unica coisa que tive mudar foi caminho do arquivo pois tive que especificar onde ele estava…

muito obrigado…

Eh isso ai, boa sorte no projeto :smiley:
T+

Gu1

galerinha estou com um probleminha, a hora que eu abro o sistema em um outro computador e gero um relatorio, ele gera o relatorio na minha máquina, vc sabe o que posso fazer para gerar o relatório no computador que acessei o sistema?

Gu1

galerinha consegui fazer com que meu servlet gere o relatorio, mas esta dando um probleminha, acessei o projeto de um outro computador e a hora que gerei o relatorio ele abriu o relatorio na minha maquina, por um acaso alguem sabe o que pode ser, vou postar o codigo aqui valew…

try {
                String sexo = request.getParameter("campoSexo");
                       // estabelece uma conexão JDBC (seria melhor usar DataSources J2EE)       
                       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");       
                       Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=banco","usuario","senha");       

                       Statement stm = con.createStatement();       
                       String consultaSQL = "SELECT count(funcionario.sexo)AS TOTALSEXO FROM dbo.funcionario funcionario INNER JOIN dbo.rescisao rescisao ON funcionario.cpf = rescisao.cpffuncionario WHERE funcionario.sexo = '"+sexo+"'";
                       ResultSet rs = stm.executeQuery(consultaSQL);     

                       /* implementação da interface JRDataSource para DataSource ResultSet */   
                       JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );   

                       /* HashMap de parametros utilizados no relatório. Sempre instanciados */   
                       Map parameters = new HashMap();   
                       // parameters.put("COLUNA", valor);   

                       /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */   
                       JasperFillManager.fillReportToFile( "F:/java_www/gestaosindicato/build/web/Relatorios/relQtdSexo.jasper", parameters, jrRS );   

                       /* Exporta para o formato PDF */   
                       JasperExportManager.exportReportToHtmlFile( "F:/java_www/gestaosindicato/build/web/Relatorios/relQtdSexo.jrprint" );   

                       /* Visualiza o relatório em formato PDF */   
                       JasperViewer.viewReport( "F:/java_www/gestaosindicato/build/web/Relatorios/relQtdSexo.jrprint", false, false );   

                       con.close();       
            } catch (Exception e) {     
                       out.println(e.getMessage());
            }
Criado 4 de dezembro de 2007
Ultima resposta 7 de dez. de 2007
Respostas 8
Participantes 3