Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 20-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 21-12-2005
cuburu cuburu is offline
Miembro
 
Registrado: mar 2005
Posts: 63
Poder: 20
cuburu Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 21-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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?
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 21-12-2005
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 141
Poder: 19
aledieb Va por buen camino
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
__________________
Suerte
Alejandro
Responder Con Cita
  #6  
Antiguo 21-12-2005
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
También podrías usar un campo FechaHora (DateTime) de esta forma te servirá si han transcurrido 25 horas o 50.
Responder Con Cita
  #7  
Antiguo 21-12-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:32:56.


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
Copyright 1996-2007 Club Delphi