Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Guardar mas de 24:00:00 en Paradox (https://www.clubdelphi.com/foros/showthread.php?t=46111)

Iskariote0087 24-07-2007 18:18:23

Guardar mas de 24:00:00 en Paradox
 
Hola gente!! tengo un probema necesito ayuda.
Estoy haciendo un programa en Delphi7 y despues de hacer unos calculos meto en una variable de tipo TDateTime el valor de dichos calculos. En alguna ocasion el resulado supera las 24 horas quedandome un valor como esto:46:05:17. Pues bien el problema es cuando quiero guardar este dato en Paradox en un campo Time. Hasta 24:00:00 no hay problema pero a partir de ahi..... conocen alguna manera de poder guardar la cantidad real de las horas? Gracias de antemano

Un saludo
Iskariote

gabrielkc 24-07-2007 18:42:37

Puedes guardar el valor en horas y minutos:

20:30=(20.50/24) . El campo tendria que ser de tipo Float

Para empezar tengo una duda.... como haces para meter mas de 24 hrs en una variable de tipo TTime. Según yo tendría que ser una variable TDateTime;

La parte Date guarda los dias completos (24 hrs) y la parte time las horas, minutos y segundos y etc. sobrantes. Puedes usar los tipos TTime, TDate y TDateTime como reales ( en realidad es lo que son)

La parte entera tiene el número de dias y la fraccionaria las hrs, mins, segs, etc.

El número obtenido por 24 te dá la cantidad total de horas más una fracción que representa minutos y segundos, la parte fraccionaria por 60 te dá la cantidad de minutos mas una fracción que representa la cantidad de segundos y así sucesivamente:

Código Delphi [-]
function HorasToReal(Hora:TDateTime):Real;
begin
 Result:=Hora;
end;


procedure RealToHoras(const AValue:Real; var Horas:Integer; var Minutes:Integer; var Seconds:Integer; var Miliseconds:Integer);
var Mins, Secs, MSecs:Real;
begin
  Horas:=Trunc(AValue*24);
  Mins:=Frac(AValue*24);
  Minutes:=Trunc(Mins*60);
  Secs:=Frac(Mins*60);
  Seconds:=Trunc(Secs*60);
  MSecs:=Frac(Secs*60);
  MSecs:=Trunc(MSecs*1000);
end;

Iskariote0087 24-07-2007 19:01:24

No guardo mas de 24Horas en una variable TTime guardo mas de 24Horas dentro de una variable TDateTime.
Es cuando quiero grabar este dato en una tabla Paradox en un campo Time cuando me da el problema.
En realidad lo que yo quiero es poder almacenar en un campo de Paradox un dato como este 48:05:10

Un saludo

marcoszorrilla 24-07-2007 20:31:47

El problema viene dado porque en un campo Ttime no puedes guardar más que 24 horas, porque lo siguiente ya sería un día.

Sin embargo esa aritimética sería posible con campos TDateTime (TimeStamp)
en donde al restar de una fecha:Hora, nos puede dar diferencias mayores del día y se guardaría cada cosa en su sitio.

En otro caso sería preciso un campo auxiliar para guardar las diferencias.

Un Saludo.

tenporal 24-07-2007 23:24:59

Y si en vez de querer guardarlo en un campo tipo Date lo guardas en un campo tipo string y lo manejas en tu programa convirtiendo el valor date a string y al recuperarlo haces la operacion contraria si es que vas a volver a ocupar el dato para modificarlo.


La franja horaria es GMT +2. Ahora son las 23:26:42.

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