Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Guardar en campo time más de 24 horas (https://www.clubdelphi.com/foros/showthread.php?t=28457)

fidel 20-12-2005 17:46:40

Guardar en campo time más de 24 horas
 
Hola:

Tengo una tabla FireBird con los campos FECHA, HORAINICIO, HORAFINAL, DURACION, TIEMPOACUMULADO.

Con los campos HORAINICIO (time) y HORAFINAL(time) calculo la DURACIÓN (time) y TIEMPOACUMULADO (time).

El problema está en que TIEMPOACUMULADO cuando llega a valer más de 24 no lo marca porque se ha pasado, es decir que si tengo un valor a 25 horas 10 minutos, me vUelve a empezar a marcar 1:10 que es el exceso de 24.

¿Alguna manera de poder visualizar las horas con tres dígitos?, por ejemplo para 34 horas 20 minutos que se vea 34:20, o para 124 horas y 21 minutos que se vea 124:21

¿O alguna otra manera de solucionar esto?

Un saludo.

jachguate 20-12-2005 23:45:00

Si tenes TimeStampInicio y TimeStampFinal, no hace falta que almacenes el tiempo de duración, pues podes obtenerlo así:

Código SQL [-]
select TimeStampInicio, TimeStampFinal, TimeStampFinal - TimeStampInicio duracion
  from tabla
 where condiciones;

A este campo, ya en delphi, podes implementarle el evento OnGetText para representar el tiempo transcurrido de la manera que te interesa de la siguiente manera:

Código Delphi [-]
Procedure form1q1DuracionGetText(var text : string; otrosparametros);
begin
  if not form1q1.IsNull then
    text := Format('%3.3d:%2.2d:%2.2d', [trunc(q1Duracion.AsFloat * 24), 
      trunc(frac(q1Duracion.AsFloat * 24) * 60),
      trunc(frac(frac(q1Duracion.AsFloat * 24) * 60) * 60)
    ]);
end;

Probablemente no compile.. eso ya te lo dejo a vos, pero la idea, está clara ¿no?

hasta luego.

;)

cuburu 21-12-2005 00:11:14

Solo crea un campo tipo char y ahi almacena tu información, hasta ahora no conozco un campo tipo date que pueda almacenar un rango mayor de 00:00 a 23:59 hrs.

jachguate 21-12-2005 00:36:47

Cita:

Empezado por cuburu
Solo crea un campo tipo char y ahi almacena tu información, hasta ahora no conozco un campo tipo date que pueda almacenar un rango mayor de 00:00 a 23:59 hrs.

¿Podrías explicar que ventajas tiene usar un campo tipo char para almacenar esta información?

aledieb 21-12-2005 01:08:33

Porque no guardas los minutos transcurridos, tendras que calcular las horas y minutos al momento de presentar los datos, pero te soluciona el problema, por lo menos en parte.

Alejandro

DarKraZY 21-12-2005 09:27:10

También podrías usar un campo FechaHora (DateTime) de esta forma te servirá si han transcurrido 25 horas o 50.

fidel 21-12-2005 23:22:01

Hola:

Tomo nota de vuestras ideas para solucionar mi problema (anque será el año que viene, pues hago un paréntesis navideño para ver a la familia en la otra punta de la península).

Gracias a todos, y Felices Navidades.

Un saludo.


La franja horaria es GMT +2. Ahora son las 08:47:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi