Valor extenso ireport

25/11/2010

0

boa tarde!

Estou com muita dificuldade em escrever em extenso um valor do campo no ireport,
eu tenho uma classe no java que faz isso, soh q nao sei passar essa classe por parametro para poder usa no ireport ou colocar essa classe no ireport.

No ireport criei o relatorio que servira para preenchimento de cheque, como vou fazer para que cada registro pegue o valor e escreva por extenso?

Aceito qualquer opniao, pois nao consegui de nenhuma maneira.

ja tentei procurar no forum mais o que encontrei nao consegui resolver.


muito Obrigado
Iramar Junior

Iramar Junior

Responder

Posts

29/11/2010

Davi Costa

Vc vai ter que passar p relatório o dataSource com o campo de valor extenso já formatado no java.
Abaixo segue um exemplo:

//imports omitidos
public class ReportUtil {
   
    private static String ERRO_MENSAGEM_REPORT = "Um erro ocorreu quando o relatório estava sendo executado.";
   
    //executa o relatório através de um JRBeanCollectionDataSource
    public static void executarRelatorio(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel, JRBeanCollectionDataSource fonteDados) throws ReportException{
       
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
       
        //pega o caminho do arquivo .jasper da aplicação
        InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);

        /*//envia a resposta com o MIME Type
        if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
            response.setContentType("application/pdf");
        }else if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
            response.setContentType("application/html");
        }
        */
        response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
        response.setContentType("application/download");
        response.setHeader("Pragma", "no-cache");
        try {
            ServletOutputStream servletOutputStream = response.getOutputStream();
           
            //envia parametros para o relatório
            if (parametros == null){
                parametros = new HashMap<String, Object>();
            }
       
            //envia para o navegador o PDF gerado
            JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
            servletOutputStream.flush();
            servletOutputStream.close();
       
        } catch (JRException e) {
            e.printStackTrace();
            throw new ReportException(ERRO_MENSAGEM_REPORT);
        } catch (IOException e) {
            e.printStackTrace();
            throw new ReportException(ERRO_MENSAGEM_REPORT);
        }finally{
            context.responseComplete();
        }
    }
   
    //executa o relatorio através de uma Connection
    public static void executarRelatorio(String caminhoRelatorio, Map<String, Object> parametros, TipoFormatoRelatorio tipoFormatoRelatorio, Connection conn) throws ReportException{
       
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
       
        //pega o caminho do arquivo .jasper da aplicação
        InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);

        //envia a resposta com o MIME Type
        if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
            response.setContentType("application/pdf");
        }else if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
            response.setContentType("application/html");
        }
       
        try {
            ServletOutputStream servletOutputStream = response.getOutputStream();
           
            //envia parametros para o relatorio
            if (parametros == null){
                parametros = new HashMap<String, Object>();
            }
       
            //envia para o navegador o PDF gerado
            JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, conn);
            servletOutputStream.flush();
            servletOutputStream.close();
       
        } catch (JRException e) {
            e.printStackTrace();
            throw new ReportException(ERRO_MENSAGEM_REPORT);
        } catch (IOException e) {
            e.printStackTrace();
            throw new ReportException(ERRO_MENSAGEM_REPORT);
        }finally{
            context.responseComplete();
        }
    }
   
    public static String retornaCaminhoLogoSend() {
       
        HttpSession sessao = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        File logoFile = new File(sessao.getServletContext().getRealPath("/img/logo-send.gif")); 
        String caminho = logoFile.getAbsolutePath();
       
        return caminho;
    }
}


Exemplo de chamada passando o DataSource:

@SuppressWarnings("unchecked")
    public void executarRelatorioUnidade() throws Exception {
       
        List dados = new ArrayList();
         Map record = null;
         
         //varre a consulta e separa os objetos
         for (Unidade unidade : findAll()) {
   
             
             record = new HashMap();
             //coloca em um Map cada um dos campos criados
             //manualmente pelo relatorio
             record.put("cd_unidade", unidade.getId());
             record.put("ds_unidade", unidade.getDescricao());
             record.put("nm_gestor", unidade.getNomeGestor());
             record.put("ds_email_gestor", unidade.getEmailGestor());
             
             //adiciona o List dados
             dados.add(record);
         
         }
   
        //cria uma fonte de dados para coleções
        JRBeanCollectionDataSource fonteDados =
            new JRBeanCollectionDataSource(dados);
        Map<String, Object> parametros = new HashMap<String, Object>();
        parametros.put("PARAMETRO_TITULO_RELATORIO", "RELATÓRIO DE UNIDADES");
        parametros.put("CAMINHO_LOGO", ReportUtil.retornaCaminhoLogoSend());
        parametros.put("CAMINHO_LOGO2", ReportUtil.retornaCaminhoLogoMinc());
       
        ReportUtil.executarRelatorio("/relatorios/emitirUnidade/emitirUnidadesReport.jasper", parametros, "Unidades", fonteDados);
       
    }

Esses campos mais em destaque de amarelo são os fields do seu relatório, que precisam ter no seu relatório, vc pode até continuar c o o SQL no seu report, mas agora já vai passar tudo mastigado para ele e formatado.
Neste exemplo estou usando JSF, caso não use essa tecnologia vai ter que adaptar um pouco. Passando o response do seu action também como parâmetro para esse método que roda o relatório.

Espero ter ajudado.

Att Davi
Responder

29/11/2010

Davi Costa

Só complementando esse trecho de código da chamada :
Map<String, Object> parametros = new HashMap<String, Object>();
        parametros.put("PARAMETRO_TITULO_RELATORIO", "RELATÓRIO DE UNIDADES");
        parametros.put("CAMINHO_LOGO", ReportUtil.retornaCaminhoLogoSend());
        parametros.put("CAMINHO_LOGO2", ReportUtil.retornaCaminhoLogoMinc());
Vc pode abstrair são só parametros do relatório caso vc tenha.

OFF(Divulgando) https://www.devmedia.com.br/post-18574-Desmistificando-a-Certificacao-SCJP6-Parte-I.html


Espero ter ajudado
Att Davi
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar