PDA

Ver la Versión Completa : dias totales de una fecha


Nereida
20-05-2008, 14:37:05
Tengo una base de datos en Interbase con los campos:

-fecha_inicial
-duracion

el calculo que tengo que hacer es el siguiente:
(fecha_inicial * duracion) - fecha_actual

Mi problema es que no sé que funcion debo de utilizar para que esto me vaya, ya que si lo pongo tal cual lo tengo puesto, da error pq no puedo multiplicar una fecha por un valor (es comprensible).
Me gustaria saber si hay alguna funcion en Delphi que me obtenga el nº de dias totales de una fecha para luego multiplicarlos por un valor.
Puede que esté enfocando el problema de un modo erróneo, asi que si se os ocurre algun otro modo, decidlo, vale??? :D

Gracias ^_^

Saludos

marcoszorrilla
20-05-2008, 14:41:09
No veo claro lo que expones.

No será:

Duracion:=Fecha_Actual - Fecha_inicial;


Mejor amplía un poco la información.

Un Saludo.

Nereida
20-05-2008, 14:44:22
No veo claro lo que expones.

No será:


Código Delphi [-] (http://www.clubdelphi.com/foros/#)Duracion:=Fecha_Actual - Fecha_inicial;




Mejor amplía un poco la información.

Un Saludo.

Me voy a explicar mejor, q las explicaciones reconozco que no son lo mio, asi que mejor pongo un ejemplo para que se entienda:
tengo un programa que compré un dia (fecha_inicial) y que caduca la licencia dentro de x años (duración). Lo que yo quiero saber es cuántos dias faltan para que caduque el programa desde la fecha en la que me encuentro:
(fecha_inicial * duracion) - fecha_actual

Caro
20-05-2008, 15:06:20
Hola Nereida, puedes hacerlo de esta forma.


var
CantDias : Integer;
FchCaducidad : TDateTime;
begin
//Añadimos la cantidad de años a la fecha inicio
FchCaducidad := IncYear(fecha_inicial, duracion);

//Calculamos la cantidad de dias entre las dos fechas
CantDias := DaysBetween(fecha_actual,FchCaducidad);
end;


Saluditos

BlueSteel
20-05-2008, 16:38:33
Tengo una base de datos en Interbase con los campos:

-fecha_inicial
-duracion

el calculo que tengo que hacer es el siguiente:
(fecha_inicial * duracion) - fecha_actual

Creo que este calculo esta malo....

pienso que deberia ser algo así

(fecha_Inicial + Duración) - Fecha_Actual

la idea es sumar la duración (años, meses, dias...) a la fecha inicial, y restarla a la fecha_actual

por lo cual, si te dan la fecha en años y o meses, deberás convertir todo a dias, sumar esos dias a la fecha_inicial y al resultado restarle la fecha actual, te dará un resultado en dias... por lo cual eso deberás convertirlo luego a años, meses y dias...

Salu2:p:D

Caro
20-05-2008, 17:14:11
Amigo Blue, por lo que explica Nereida en su segundo comentario la duración contiene la cantidad de años, por lo que solo debería de aumentar a su fecha inicial la cantidad de años que puede hacerlo con IncYear, lo del "*" también me ha llamado la atención.

Saluditos

BlueSteel
20-05-2008, 18:33:02
Amigo Blue, por lo que explica Nereida en su segundo comentario la duración contiene la cantidad de años, por lo que solo debería de aumentar a su fecha inicial la cantidad de años que puede hacerlo con IncYear, lo del "*" también me ha llamado la atención.

Saluditos

Bueno, por eso puse que el calculo estaba mal... no me cuadraba el multiplicar la fecha_inicial por la duración....:confused:


Pero depende de los Distribuidores de Softwares, hay algunos que te dan licencia por meses, asi que no se si el IncYear seriviria... por eso yo optaria por transformar todo a dias y sumarlos a la fecha_inicio.....

Salu2:p:D

marcoszorrilla
20-05-2008, 18:36:11
Pues yo creo que si a la fecha final le restamos la del día de hoy nos dará los días de licencia que quedan y de esta manera no es necesario que intervenga la fecha inicial.

Si queremos saber los dias transcurridos de la licencia, fecha actual - fecha inicial.

Un Saludo.

Nereida
21-05-2008, 08:54:24
Muchisimas gracias Caro, lo termino de hacer asi y me funciona genial.

Así no he tenido que compliarme tanto la vida.

Gracias =D

Saludos

elaprendizprog
18-06-2008, 14:28:43
Bueno dias,
Necesito de su ayuda a realizar un form de consulta pero al mismo le quiero poner un Grid donde me muestro los numero de la solicitu y los dias transcurridos hasta la fecha, tomando en cuenta que deberia ser una cuenta regresiva de 60 dias es necesario que en el grid me muestre un grafico con barras de colores donde la funcion de esta barra debe ser que a medida que trancurran los dias se haga mas pequeña: ejemplo a los sesenta dias sea de color azul y grande a los trenta de color anarajado y mas pequeña y cuenado llegue los ultimos 15 dias se pequeña y de color rojo hasta llegar a 0 dias, tomando en cuenta que guardo la fecha inicial en la base de datos Interbase con un campo Varchar no se como tomar la fecha actual y que me saque la diferencias de dia transcurridos tal como lo explique. Estoy programando en delphi2005 con base de dato interbase.