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 15-06-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Problema al Sumar Días a cierta Fecha

Buen día tengan compañeros, platico mi Gran Problema, tengo la siguiente función:
Código Delphi [-]
function SumaFechaD(Fecha:TDate; x:integer):string;
var
  Present: TDate;
begin
  Present:=Fecha+x;

  {Fecha = 08-Jun-2006
  X= 30
  Present = 22-Jun-2006
  if 22Jun2006 Menos 08Jun2006 <> 30 días entonces
                                           14 días
    Present = 22Jun2006 + (30 días - (22Jun2006 - 08Jun2006))
                        +  16 Días
    Present := 08Jul2006
   }
  {Condición para Asegurarnos de que el Vencimiento este correcto}
  if Present-Fecha <> X then
    Present:=Present+(X-(Present-Fecha));
    
  result:=DateToStr(Present);
end;

La finalidad de esta función es de sumar días a cierta Fecha, la uso para determinar los días de vencimiento de una factura de crédito, TODO funciona de maravilla si hago pruebas, pero en ocasiones me reportan que sale el vencimiento incorrecto es decir la fecha de vencimiento se determina dependiendo de los días de crédito del cliente, yo guardo en el Maestro de la Factura la Fecha de la Factura, Fecha de Vecimiento y Días de Crédito del Cliente, y aprox. de 2 a 4 facturas por semana salen de que teniendo el cliente 30 días de crédito, el vencimiento lo determina por 11,14,16,26,27 ó 28 días, asi sale impreso en la factura y asi se guarda en el maestro de la Factura, no se si tengo algun error en la función que presento arriba, la forma de calcular la fecha de vencimiento es:
Código Delphi [-]
Vecimiento := SumaFechaD(StrToDate(maFecEmision.text),tClientesDIASCRED.AsInteger);
Agredezco cualquier opinion.
Responder Con Cita
  #2  
Antiguo 15-06-2006
Yosuun Yosuun is offline
Miembro
 
Registrado: jun 2004
Ubicación: Bilbao-Bizkaia
Posts: 28
Poder: 0
Yosuun Va por buen camino
Hola No se si entiendo lo que quieres decir pero yo para sumar dias o meses a una fecha utilizo las funciones de delphi.

IncMonth (sumar Meses)
IncDay (sumar dias)

Extraido de la ayuda delphi.
---------------------------
function IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime;
Description
IncDay returns the value of the AValue parameter, incremented by ANumberOfDays days. ANumberOfDays can be negative, to return a date N days previous.
The time of day specified by the AValue parameter is copied to the result.


Un saludo.
Responder Con Cita
  #3  
Antiguo 15-06-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
No entiendo porque haces y deshaces lo hecho dentro de esa funcion, del mismo modo el if que pones es absurdo, que se pretende comprobar con eso ?? si el procesador a sumado mal ?? Si esto pudiese darse y para ello pusieses esa comprobacion, las sumas y restas que haces despues en el if:
Present:=Present+(X-(Present-Fecha));
Tambien pondrian fallar, de modo que tendrias que poner otro if para comprobar esta nuevas sumas y restas, y lo mismo con las operaciones del nuevo if, lo que significaria que tendrias que poner IFs infinitos. Es mas la misma condicion del if podria fallar de modo que no sirve para nada.

Adicionalmente la operacion,
Present:=Present+(X-(Present-Fecha));
Se simplifica en lo siguiente:
Present:= X+Fecha;
Que es lo mismo que tienes puesto en la primera linea.

En definitiva para sumar fechas no necesitas siquiera hacer ninguna funcion, pon simplemente:

NuevaFecha= Int(Fecha) + Dias;

O si tienes un delphi moderno llama a la siguiente funcion (la funcion hace lo mismo que arriba, simplemente suma los dias y listo):

NuevaFecha:= IncDay(Fecha,Dias);

Y NADA MAS.


Saludos
Miguel
Responder Con Cita
  #4  
Antiguo 15-06-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Gracias!!!!

Gracias Compañeros, yo se que el IF que tengo no es necesario y es absurdo de que el procesador no sume correctamente, pero no me da otra alternativa que ponerlo, pero espero no me suceda lo mismo con el IncDay

Gracias por sus respuestas.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sumar dias a una fecha inicial en delphi bellota Varios 4 06-06-2006 16:42:40
Número de días a fecha magm2000 Varios 2 15-09-2005 02:28:16
SUmar dias a una fecha raffagia Varios 1 04-10-2004 18:28:13
Sumar Dias a una fecha? danytorres SQL 1 16-01-2004 05:04:15
Dias entre una fecha y la fecha del sistema afarenas Firebird e Interbase 1 30-09-2003 17:36:53


La franja horaria es GMT +2. Ahora son las 15:49:20.


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