Alguém sabe como faz somatório de String contendo dados de hora exemplo 5:01 + 5:01 = 10:02
obrigado!
:?:
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:
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??
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
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)+ ":"