Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Una Duda sobre campos de fechas (https://www.clubdelphi.com/foros/showthread.php?t=49302)

ale_metall 18-10-2007 02:22:51

Una Duda sobre campos de fechas
 
Hola Amigos, necesito saber como realizar lo siguiente:
Estoy haaciendo una aplicacion para controlas pagos mensuales de un comercio. De esta manera me interesa cargar una tabla de pagos con, entre otros campos uno: FechaInicio, y otro FechaVence del periodo vigente para pagar.

cuando se carga un nuevo periodo de pago, tengo que asignar la fecha actual a FechaInicio (en esto no hay problema). Mi duda surge en cuanto a como hacer para asignar la misma fecha, pero del mes siguiente para el campo FechaVence, ya que el periodo es de un mes. Y ademas como controlar en caso de que me encuantre en el ultimo dia del mes y el mes siguiente no tenga la misma cantidad de dias que el presente.

trabajo en delphi 6 y con base de datos paradox 7.

Desde ya, gracias...

Saludos.

enecumene 18-10-2007 03:10:49

Hola ale_metall, para eso tienes que sumar la fecha actual mas los dias que hacen al mes siguiente que son 30 dias(o quizas 31), puedes hacerlo de varias formas via consulta SQL:

Código SQL [-]
SELECT DATE_ADD(CURDATE(), INTERVAL 30 DAY);

o mejor:

Código SQL [-]
SELECT DATE_FORMAT(DATE_ADD(CURDATE(),INTERVAL 30 DAY) ,’%d/%m/%Y');

espero que te ayude.

Saludos.

Caral 18-10-2007 03:43:44

Hola
enecumene te ha dado una opcion muy interesante (como se aprende en el club, ya es un maestro).
Ahora lo que se plantea es muy especifico, recuerda que hay meses de 28, 29, 30 y 31, como definir tantas opciones.
Para mi lo logico es que el usuario defina las fechas y para ese fin existe el DateTimePicker, para que inventar lo que ya existe y funciona.
Solo opino.
Saludos

gluglu 18-10-2007 10:07:08

No sé si estamos hablando a nivel de sentencia SQL o a nivel de código Delphi ?

En Delphi tienes la función IncMonth dentro de la unit SysUtils ;)

kuan-yiu 18-10-2007 10:15:19

Si necesitas que los pagos se hagan en el mismo día lo mejor es modificar únicamente el mes sin tocar los días (vigilando el año).

Código Delphi [-]
DecodeDate(fecha, dia, mes, anho);
if mes<12 then
  mes := mes+1
else
begin
  mes := 1;
  anho:= anho+1;
end;
fecha := EncodeDate(dia, mes, anho);

Lepe 18-10-2007 10:18:11

Ten en cuenta que no es lo mismo un mes, que 30 días, que el mismo día del mes siguiente.

Después te aconsejo lo hagas por código delphi ya que será más cómodo para tí. La unidad DateUtils de delphi tiene todas las rutinas que necesitas para incrementar días y meses (IncDays, IncMonth) recodificar fechas (RecodeDate, RecodeDateTime), tener en cuenta el día de la semana (DayofWeek, DayofTheWeek) etc.

Saludos

kuan-yiu 18-10-2007 10:19:47

O usar IncMonth(fecha) que hace exactamente lo mismo... Si es que a veces ni me acuerdo de revisar la ayuda antes de ponerme a teclear.

gluglu 18-10-2007 10:49:43

Cita:

Empezado por gluglu (Mensaje 239379)
En Delphi tienes la función IncMonth dentro de la unit SysUtils

... me cito a mi mismo mismamente ! :D

... y me atrevo incluso a rectificar a Lepe, indicando de nuevo que IncMonth está dentro de la unit SysUtils (... al menos en BDS 2006 :o ). Por supuesto sin desmerecer en absoluto todas las demás funciones de gestión de fechas que aparecen en la unit DateUtils, que no son pocas, y que a buen seguro ayudarán a nuestro amigo. :rolleyes:

El problema que puedes tener con DecodeDate y EncodeData tal y como menciona kuian-yiu es que al mantener el mismo día pero cambiar el mes, resulte (p.ej. 31.09.2007), una fecha que no existe y te dará error. Sería cuestión de implementar tu propia lógica con este método para obtener el resultado deseado.

ale_metall 21-10-2007 19:38:45

gracais amigos, use las funciones d la unit SysUtils, no las conocia.. y me fueron de gran utilidad!!!

agradecido desde ya!!

Saludos


La franja horaria es GMT +2. Ahora son las 11:02:33.

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