Ireport com Procedure Mysql

8 respostas
O

Estou com o grande problema.

Estou fazendo o seguinte

Em EDITAR>QUERY RELATORIO

estou colocando a seguinte procedure

call sp_Rel_Agupamento_Mensal_Rec_Pag(1,2008,9);

Essa procedure reporta um ‘select’ com 4 campos. O ireport mostra os nomes dos campos certinho.
Porém quando mando executar o relatório ele me traz os valores errados.

Fiz um teste gerando uma tabela e dando um select pelo Ireport, esta me retornando certinho.

Preciso de ajuda. O que posso fazer para que o Ireport mostre os valores que vem da procedure corretamente.

Caio Oliveira

8 Respostas

A

Você esta passando os fields corretos no se relatório?

O

Sim esta mostrando valores mais são valores errados.
Preciso disso amigos isso já me ajudar muito

Caio Oliveira

O

Alguém me ajuda por favor :roll:

Rodrigo_Rocha_de_Mor

Vei, posta o código do momento em que vc gera o relatório aí!

Talvez vc tenha que passar suas variáveis de consulta por parâmetro para o JasperReport e declarar esses parâmetros no IReport e colocá-los na consulta…

Mas antes posta aí pra ter uma idéia…
Outra coisa, a consulta não retorna nada ou retorna valores inválidos?!

[]'s

O

A ideia é chamar o Ireport passando somente a conexão. Colocar no Arquivo Jasper a chamada da procedure.

O
call sp_Rel_Agupamento_Mensal_Rec_Pag(1,2008,9) ;

Isso já fica armazenado no jasper faço a chamanda do relatorio assim.

package Service.Relatorio;

import java.io.File;
import jdbc.ConnectionFactory;

import java.io.IOException;
import java.sql.SQLException;

import java.sql.Connection;
import java.util.HashMap;



import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;

public class GeradorDeRelatrios extends HttpServlet implements Servlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String NomeJasper = (String)request.getSession().getAttribute("nomejasper");
        String pathJasper = getServletContext().getRealPath("/WEB-INF/classes/jasper/")  + "/";
        String path = getServletContext().getRealPath("/");
        new File(path + NomeJasper + ".pdf").deleteOnExit();
        try {
            JasperPrint impressao = this.SetaValoresJasper(pathJasper + NomeJasper + ".jasper");
            if (impressao != null) {
                JasperExportManager.exportReportToPdfFile(impressao, path + NomeJasper + ".pdf");
                response.sendRedirect("http://caio:8080/RelatorioWEB/" + NomeJasper + ".pdf");

            }
        } catch (IOException ex) {
             response.getWriter().print("Erro");
        } catch (JRException ex) {
            response.getWriter().print("Erro2");
        }
         
        //response.sendRedirect("http://www.google.com.br");
    }
    
    public JasperPrint SetaValoresJasper(String CaminhoArquivoJar) {
        try {
            @SuppressWarnings("static-access")
            Connection con = ConnectionFactory.getInstance().getConnection();
            HashMap map = new HashMap();
            JasperPrint rel = JasperFillManager.fillReport(CaminhoArquivoJar, map, con);
            return rel;
        } catch (JRException ex) {
            return null;
        } catch (SQLException ex) {
            return null;
        }
    }


}

Ele me resporta o fieds certinhos. Porém quando mando executar o relatorio no ireport mesmo ele me mostra uns valores doidos

Me Ajude

Caio Oliveira

faelcavalcanti

evite sempre passar a conexão do banco para o ireport.
tenha sempre uma camada intermediária que te passa as informações para o ireport a partir de um datasource para isto.

você estará evitando este e inúmeros problemas, bem como a saúde de quem for dar manutenção.

Descio_Oliveira

Ai Caio … estou com o mesmo problema …
coloquei valores defaul no ireport para testar… mas o retorno para alguns fields é null, e para outros valores que nao tem nada a ve com a consulta…
se eu chamo a procedure no prompt de comando ela funciona blzinha … agora, chamando no ireport ta td zuado …

eu queria sabe se vc achou a solução para esse problema ai …?! ou se alguem pode me ajuda …

aguardo respostas… abraço .

Descio Oliveira.

Criado 29 de agosto de 2008
Ultima resposta 13 de ago. de 2009
Respostas 8
Participantes 5