Olá Rodrigo!
Implementei da forma que você passou, mas simplesmente ele não lista o relatório. Retiro e funciona, porém com null:
($V{diferenca} == null) ? "0" :$V{diferenca}.doubleValue()
Executo a opção pra validar expressão e o retorno é que a mesma está Ok.
Campos utilizados no relatório:
$F{sem_atual} :Quantidade de Horas semestre atual
$F{sem_antl} : Quantidade de Horas semestre anterior
$V{diferenca} = $F{sem_atual} - $F{sem_antl}
Implementei o código na opção EXPRESSÃO do campo $V{diferenca}. Também testei na opção “Imprimir quando a Expressão” e não funcionou.
Retiro essas expressões e ele roda sem problemas. Ah, isso tudo dentro do Ireports 2.0.1.
Quanto a utilizar o coalesce(), estou utilizando o Hibernate, porém dá erro “exception” com esta função.
List<Alocacao> todosAlocacaoes = new ArrayList<Alocacao>();
String cmdSql = "select distinct professor.pfr_nome as professor_pfr_nome, professor.pfr_qtdHoras as professsor_pfr_qtdHoras,"+
"coalesce((select sum(alocacao.alc_qtdHoras) from bean.Alocacao alocacao where alocacao.alc_professor.pfr_id = professor.pfr_id and alocacao.alc_semestre.smt_id =:semestreIdAtual),0) as sem_atual,"+
"coalesce((select sum(alocacao.alc_qtdHoras) from bean.Alocacao alocacao where alocacao.alc_professor.pfr_id = professor.pfr_id and alocacao.alc_semestre.smt_id =:semestreIdAnt),0) as sem_ant "+
"from bean.Alocacao alocacao "+
"left outer join alocacao.alc_professor professor "+
"group by alocacao.alc_semestre.smt_descricao,professor.pfr_nome "+
"order by alocacao.alc_semestre.smt_descricao,professor.pfr_nome ";
try {
Session session = ConexaoHibernate.getSession();
Query select = session.createQuery(cmdSql);
select.setInteger("semestreIdAtual",semestreIdAtual);
select.setInteger("semestreIdAnt",semestreIdAnt);
todosAlocacaoes = select.list();
session.close();
}
catch (Exception ex){
throw new SistemaException("AlocacaoDao","getListaAlocacao","Não foi possível buscar lista Alocacao Cadastrados no banco de dados.\n" + ex.getMessage(), "query");
}
return todosAlocacaoes;
Grato.