Como criar um parâmetro no iReport para a data virar a idade da pessoa

6 respostas
W

Bom dia Pesoal,

Estou fazendo um relatório no iReport e a agora preciso usar parâmetros para que no mesmo em vez de aparecer a data de nascimento possa aparecer a idade da pessoa. Por exemplo:

A codificação que foi feita no netbeans para aparecer a idade do paciente está dessa forma:

public void preencherTela(){
        java.text.SimpleDateFormat formatador = new java.text.SimpleDateFormat("dd/MM/yyyy");

Date dataNasc = dataNascPaciente_bco;
        dtNasc.setText(formatador.format( dataNasc ));

        Date dataHoje = new Date();
        dataAtendimento.setText(formatador.format( dataHoje ).toString());

        int idade = dataHoje.getYear() - dataNasc.getYear();
        idadePaciente.setText(String.valueOf(idade)+" anos");

show();

        telaPreenchida = true;

    }

Pergunto:

1. Como faço para criar esse parâmetro no iReport?
2. O iReport que estou usando é o 4.0.2. A criação do parâmetro será da mesma forma que está a codificação acima ou tenho que mudar alguma coisa?

Certo de contar com a ajuda de todos,

Muito obrigado,

Elcio

6 Respostas

drsmachado

Faz essa programação no java e apenas coloca o parâmetro no MAP que vai no momento em que você chamar o relatório

W

Prezados amigos e drsmachado,

A codificação que foi implementada no netbeans você disse que é só colocar o parâmetro no MAP que vai no momento em que chamar o relatório. Chamo o relatório na codificação que está abaixo:

private void visualisarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try{ Connection con = new Facade().getConnection(); Hashmap parametros = new Hashmap(); JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", (Map) parametros, con); JasperViewer jrv = new JasperViewer (jp, false); jrv.setVisible(false); } catch (Exception e) { e.printStackTrace(); } }

Onde entrará o código do cálculo da idade. Por acaso é depois da linha que está abaixo:

Hashmap parametros = new Hashmap();

Desde já agradeço a colaboração,

Muito obrigado,

Elcio

drsmachado
parametros.put("idade", aquiVaiORetornoDoCalculoDaIdade);
            JasperPrint jp = JasperFillManager.fillReport("./jasper/Mapatrab.jasper", (Map) parametros, con);
W

Ok. Até aí tudo bem entendi. Mas no iReport existe o campo idade e o conteúdo que no caso é a data do nascimento e não a idade em si. Por exempo no nome desse atributo no qual foi criado no Oracle é: PACIENTE_DATA_NASC. Pergunto:

  1. Não será necessário mexer nesse campo no iReport?
  2. Clico o botão direito do mouse em cima de campo e faço as modificações?

O que devo fazer.

Muito obrigado,

Elcio

drsmachado

Camarada, o iReport irá utilizar o que foi passado no Map como valor para os parâmetros que possui.
Portanto, se você criar um parâmetro com chave “idade”, terá de ter, no iReport, um $P{idade}

W

Muito obrigado meu amigo,

Vou testar e qualquer coisa volto a falar-lhe.

Desde já agradeço,

Elcio

Criado 14 de outubro de 2011
Ultima resposta 14 de out. de 2011
Respostas 6
Participantes 2