Somatório de String contendo hora Ireport

Alguém sabe como faz somatório de String contendo dados de hora exemplo 5:01 + 5:01 = 10:02

obrigado!

:?:

O melhor a se fazer e você mudar os tipos para time ou algo do tipo que você ache mais correto e criar uma “variavel” que faça o SUM para você.

O iReport já tem a função SUM(no combo Calculation type), basta você pedir para criar uma “variavel”.
Não se esqueça de definir o tipo correto no combo “Variable class type”

O FODA É ISSO MUDEI OS CAMPOS PRA TIME E FIZ O SUM, ELE PEGA O ÚLTIMO VALOR QUE APARECER NA LISTA POR EXEMPLO:

1
2
3
4

TOT - 10

ELE ME PASSA 4

FODA NE, TEM OUTRA IDEIA?

Estranho parece que ele esta fazendo um “count” ao inves do “Sum”.
Eu faço assim e nunca tive problemas.

Mas por via das duvidas da uma olhada no seu agrupamento, verifica se o campo “Reset type” esta como “Report”.

Que banco você usa??

Eu uso o SQLServer.

To mandando em anexo uma imagem com a variavel que eu criei no iReport.


Doido vo dar uma olhada no anexo.

My bank is sql server.

juliano com o tipo iinteiro da certo, tenta com tipo date ai ve se funciona no seu.

VALEUUUUUUUU :lol:

Fala Moçada eu e meu amigo do serviço conseguimos fazer a formula para somar a hora num campo string e trabalhoso mas vamo lá:

PRIMEIRO CADA PARTE DITA ABAIXO VOCE DEVERÁ CRIAR UMA VARIAVEL PARA CADA PEDAÇO, SENÇAO ALÉM DE CONFUSO A FORMULA IA FICAR GIGANTE E DE REPENTE NEM JEITO IA TER DE FAZER, ENTAUM O NEGÓCIO E POR PARTES!

OBS: TEMPO GASTO E A HORA QUE IREMOS FAZER O SOMATORIO.

primeiro é necessário pegamos a parte da hora ex: 2:15
iremos pegar o 2 da seguinte forma:

Integer.valueOf($F{TempoGasto}.substring( 0, $F{TempoGasto}.indexOf( “:” )))

em seguida pegar os minutos 15:
Integer.valueOf($F{TempoGasto}.substring( $F{TempoGasto}.indexOf( “:” ) +1 ))

em seguida transformar as horas em minutos, somente a parte de horas ex:
2:15 - 120 minutos
new java.lang.Integer( ($V{hora}.intValue()) *(60) )

em seguida iremos fazer o somatorio das horas e dos minutos separadamente através do botão de somatório que já existe no ireport e so clicar no M do somatorio marcar o campo que deseja fazer o somatório e dar OK.

com os 2 somatorios separadamente iremos fazer a soma dos 2 somatorios ex:

2:15

horas - 120min
minutos - 15min

135 min

EM SEGUIDA GUARDE OS 135MIN NUMA VARÍAVEL E OS DEMAIS CAMPOS ANTERIORES COMO JÁ DITO SEMPRE SEPARADOS EM CADA VARIÁVEL.

COM A VARIAVEL 135MIN EM MÃO COM O NOME TOTALMIN IREMOS FAZER A FORMULA COMPLETA DA HORA ABAIXO:

String.valueOf($V{TOTALMin}.intValue() / 60) + “:” + ( String.valueOf($V{TOTALMin}.intValue() % 60).length() > 1 ? String.valueOf($V{TOTALMin}.intValue() % 60) : “0” + String.valueOf($V{TOTALMin}.intValue() % 60) )

ESSA FORMULA TB É GUARDADA DENTRO DE UMA VARIÁVEL QUE EM SEGUIDA E CARREGADA ATRAVÉS DO MOUSE PARA O LAYOUT DESEJADO.

OBS: AKI NAO SE USA PARAMETROS, SO VARIAVEIS MAIS NADA! E DETALHE QUE ESSA ULTIMA FORMULA E DO FORMATO STRING POR CAUSA DOS :, JAS AS DEMAIS SAO TODAS INTEGER.

VALEU MOÇADA QQ COISA SO FALAR

ANDRE :lol: :lol: 8)

E com faz quando o campo é do tipo Time? Ainda não encontrei solução e por incrível que pareça, no final onde deve aparecer o somatório, aparece o último registro como dito pelo andreengesoft. Tá osso!!! O banco que estou usando é o Mysql

Ressuscitando o tópico.

Galera, usei o método que o André criou, mais alguém usou?
Estou com problemas…

Somei duas horas 4:20 + 4:10 = 8:30

Ele ta retorando: 8.5:30

Ou seja, é algum erro ou problema nessa parte do código:

String.valueOf($V{TOTALMin}.intValue() / 60) + ":"

Alguém sabe resolver??

Obrigada!

Opa, consegui resolver, tava faltando só fazer isso, pra pegar somente a parte não fracionário da equação:

String.valueOf((int)($V{TotalMinutos}.intValue()) / 60)+ ":"

:smiley: