Quebra realizada a partir de um parâmetro: iReport

1 resposta
L

Boa tarde!

Procurei na web e também no fórum, e não encontrei um tópico a respeito dessa dúvida especifíca, por isso criei um (se estiver no local errado, peço desculpas, e podem mover sem problemas).

Tenho uma aplicação desktop em Java onde desejo gerar laudos (relatórios) utilizando o iReport. Um laudo possui vários exames com seus respectivos resultados, e cada exame possui um tipo de material (sangue, urina, fezes, etc.). Gerar o relatório com os exames e resultados já consigo. Estou com problemas quanto ao seguinte: gostaria de realizar uma quebra de página pelo material de cada exame. Por exemplo, se eu passasse uma lista com 5 exames, sendo 4 de sangue e 1 de fezes, ele agruparia em uma página os 4 de sangue, e na outra página o de fezes.

Este é o método que utilizo atualmente para chamar o relatório:

public void gerarLaudos(Atendimento a, List<AtendimentoExame> latex2) {
        try {
            conectarRelatorio("laudo.jrxml");

            Date dataAtual = new Date();

            MatController mt = new MatController();
            List<Material> lmat = mt.buscarTodosMat();
            Map parametros = null;
            
            for (Material m : lmat) {
                 parametros = new HashMap();
                for (int i = 0; i < latex2.size(); i++) {
                    if (m.getIdMaterial() == latex2.get(i).getIdMaterial()) {

                        parametros.put("pTitulo", "Resultado de Exame");
                        parametros.put("pNomePac", a.getNomePac());
                        parametros.put("pDataNasc", a.getDataNasc());
                        parametros.put("pConvenio", a.getNomeCon());
                        parametros.put("pMedico", a.getMedico());
                        parametros.put("pDataAtual", dataAtual);
                        parametros.put("pObs", a.getObs());
                        parametros.put("pNomeFunc", a.getNomeFunc());
                        parametros.put("pMaterial", latex2.get(i).getDescMaterial());
                    }
                }
            }


            List lista = new ArrayList();
            lista = latex2;

            JasperPrint impressao = JasperFillManager.fillReport(relatorio, parametros, new JRBeanCollectionDataSource(lista));
            JasperViewer viewer = new JasperViewer(impressao, false);
            viewer.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Não sei se consegui explicar bem, mas se alguém tiver uma "luz" pra me dar quanto a isso ficaria grata, tô meio desanimada até porque alguns links que eu encontrei dizem que a quebra por parâmetros não funciona corretamente no iReport. O mais curioso, conheço muitas pessoas que manjam de Java mas nada a respeito de relatórios, está difícil encontrar alguém que sequer conheça o iReport, parece que ninguém utiliza pra gerar relatórios :S por isso me rendi e apelei pro fórum.

Obrigada pela atenção.

1 Resposta

leoramos

Lucy, inclua no local onde queres fazer a quebra de página um objeto “break”, e coloque nele uma expressão booleana de teste para o “Print When Expression”.
Algo como

new Boolean($P{quebre}) supondo que você envie um parâmetro dizendo que é pra fazer a quebra.
Não sei se me fiz entender… qq coisa, pergunte!

Criado 21 de março de 2011
Ultima resposta 21 de mar. de 2011
Respostas 1
Participantes 2