Calculo de horas totais ireport

4 respostas
marcospaulo.suporte

Galera… boa tarde.
Estou com uma dificuldade imensa pra somar horas de funcionários no ireport.

Separados por código de funcionário deu certo, consigo fazer a soma das horas por query do banco de dados e mostrar por meio de subrelatorio.
Mas tenho um relatório que está com o grupo por setor e não por codigo de funcionário.

Precisaria saber o total de horas pelo Setor… o campo hora está vindo como String pra mim.

4 Respostas

RiQuInHo_

No menu do iReport clique no Visualizar/Variaveis do Relatório, clique no botão novo e de um nome para a váriavel. Depois em Variable Class Type defina a váriavel como java.lang.Double, em Calculation Type defina como Sum. Em Variable Expression defina o nome do Field que vc quer somar, EX: $F{PRODUTO}, EM Initial Value Expression digite new java.lang.Double(0) e clique em Ok para finalizar… Agora no menu do iReport clique no botão que tem o F, aquele de criar Fields… crie um Field (Campo) e depois de dois cliques no condenado, clique na aba TextField em Text Field Expression Class defina o campo como java.lang.Double(0) e em TextField Expression faça o seguinte… Faz de conta que vc definiu o nome da váriavel como TOTAL, então no TextField Expression vc deve colocar $V{TOTAL} e depois fecha a janela. Execute e veja se aonde vc colocou a variável $V{TOTAL} está aparecendo a soma de todos os elementos da coluna…

abrxs

marcospaulo.suporte

Amigo, vou tentar com Double e volto dizendo se deu certo ou não… obg pela dica.

marcospaulo.suporte

Amigo…
Deu o erro que eu pensei que daria.

Error filling print... java.lang.String cannot be cast to java.lang.Number 
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number

em que formato devo trazer essas horas?
Está vindo como String… mas meu banco trato como ‘time’ (Sql Server)

Existe alguma outra forma?

RiQuInHo_

vê se ajuda dessa forma.

no seu campo:

$F{TOTAL}.doubleValue() > new Double(0.0).doubleValue() ? String.valueOf($F{TOTAL.doubleValue()}) : ""

dica:
no “Print when”, não esqueça de converter o “boolean” para “java.lang.Boolean”.

new java.lang.Boolean($F{TOTAL}.doubleValue() > 0d )

abrxs

Criado 29 de outubro de 2012
Ultima resposta 30 de out. de 2012
Respostas 4
Participantes 2