Cálculo de tiempos en DataReport

Estoy haciendo una aplicación en la que tengo que sumar tiempos y mostrarlos en un formato como: 115h 20m 30s (p. Ej). Tengo un campo en segundos (TiempoEnSegundos) y otro con el string equivalente(TiempoString).
Utilizo el campo en segundos para sumar (hacer subtotales) pero no se como pasarlo a formato horas, minutos, segundos en el DataReport.
Por ejemplo:
A, 65, 0h 1m 5s
A, 35, 0h 0m 35s
B, 80, 0h 1m 20s
B, 4210, 70h 0m 10s
Mi report es:
A
0h 1m 5s
0h 0m 35s
Total: 100 (quiero mostrar: 0h 1m 40s)
B
0h 1m 20s
0h 0m 10s
Total: 4290 (quiero: 70h 1m 30s)
El Total es un control function del Datareport SUM(TiempoEnSegundos)
Respuesta
1
La verdada no se si exista una función similar a lo que deseas, yo utilizo el Crystal Repoprts 8.0 y hasta donde se no se puede hacer lgo similar, lo que te sugiero es que tu crees la fórmula: no parece muy difícil,
Si necesitas más ayuda
Hasmelo saber bye
Hola! Gracias por la respuesta! ¿Y dónde se crea la fórmula? ¿Es una característica del Crystal? ¿Sabes si el DataReport de VB6 permite crear fórmulas? Porque lo he estado intentando y creo que sólo permite las prefijadas: SUM, AVE, MIN, MAX...
Yo querría algo así:
SegundosToTime(SUM[CAMPO_Segundos])
Siendo SegundosToTime una función programada por mi que devuelve un String.
Gracias otra vez!
Creo que lo que te comento en la anterior aclaración no es posible (insertar una función nueva en el DataReport)
No se si se te ocurre alguna manera. Se me ocurre acceder a los resultados calculados por el datareport desde visual basic, modificar el formato y volverlo a poner en Labels o en la propia función.
A los labels del Datareport si se puede acceder y modificarlos. ¿Se puede hacer lo mismo con las funciones? ¿O por lo menos leer el resultado desde código? (No lo consigo)
Gracias.
Sinceramente no te podría contestar ya que no conozco casi nada de data report, lo que te aconsejo es que utilices Crystal no es nada difícil y si lo necesitas te mando un ejemplo

1 respuesta más de otro experto

Respuesta
Otra vez:
Me aburría y te he hecho la función con los segundos y todo espero que te sea útil.
Saludos.
type hora
Hh as integer
Mm as integer
Ss as integer
end type
Function SumaHoras(hora1 as string, hora2 as string) as string
Dim HorasTotales As Integer
Dim MinutosTotales As Integer
Dim SegundosTotales As Integer
Dim HoraA As hora
Dim HoraB As hora
Hora1 = "10:01:01"
Hora2 = "11:00:01"
HoraA.hh = Int(Mid$(Hora1, 1, InStr(1, Hora1, ":") - 1))
HoraA.mm = Int(Mid$(Hora1, InStr(1, Hora1, ":") + 1, 2))
HoraA.ss = Int(Mid$(Hora1, InStr(InStr(1, Hora1, ":") + 1, Hora1, ":") + 1, 2))
HoraB.hh = Int(Mid$(Hora2, 1, InStr(1, Hora2, ":") - 1))
HoraB.mm = Int(Mid$(Hora2, InStr(1, Hora2, ":") + 1, 2))
HoraB.ss = Int(Mid$(Hora2, InStr(InStr(1, Hora2, ":") + 1, Hora2, ":") + 1, 2))
HorasTotales = HoraA.hh + HoraB.hh
SegundosTotales = HoraA.ss + HoraB.ss
If SegundosTotales >= 60 Then
MinutosTotales = MinutosTotales + Int(SegundosTotales / 60)
SegundosTotales = SegundosTotales Mod 60
End If
MinutosTotales = HoraA.mm + HoraB.mm
If MinutosTotales >= 60 Then
HorasTotales = HorasTotales + Int(MinutosTotales / 60)
MinutosTotales = MinutosTotales Mod 60
End If
SumaHoras = Format$(HorasTotales, "00") & ":" & Format$(MinutosTotales, "00") & ":" & Format$(SegundosTotales, "00")
End function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas