Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   bucle for utilizando fechas (https://www.clubdelphi.com/foros/showthread.php?t=39888)

barrauda 01-02-2007 15:06:17

bucle for utilizando fechas
 
Hola amigos! necesito realizar un bucle (puede ser for) para ejecutar un código pero dentro de un rango de fechas. Por ejemplo el código se tiene que ejecutar desde supongamos el 01-02-07 al 31-07-07. Necesito saber que tipo de datos tengo que usar y cómo realizar la consulta. A la fecha inicial la tomo de un MonthCalendar y a la fecha final tambien.
Hay un hilo donde preguntaban esto en el año 2005, pero no me quedó muy claro, por eso abro este otro.
Muchas gracias

marcoszorrilla 01-02-2007 16:15:50

Tendrás que decirnos en donde están las fechas, ¿en una base de datos?.
Y también que pretende hacer dicho bucle que por lo que presumo deberá ser:

Código Delphi [-]
{Previamente se supone hemos aislado las fechas}
While not MiTabla.Eof do
begin

MiTabla.Next
end;

O activar un filtro entre dichas fechas.

O incluso una consulta.

Un Saludo.

barrauda 01-02-2007 17:10:55

Resuelto
 
Hola marcoszorrilla, muchas gracias por responder. Ya pude resolver el problema entendiendo un poco lo del hilo anterior. Pongo la solución para los que necesiten algo parecido.
Lo que yo etaba precisando era ejecutar un código (puede ser cualquiera, no es lo importante) dentro de un bucle pero que ese bucle dependa de una fecha inicial y una fecha final. Lo que yo tenía que hacer era guardar en una base de datos (PostgreSQL) el número de una semana + la fecha de esa semana, siempre salteando de un dia seleccionado al mismo día de la semana siguiente (por ejemplo si selecciono el Viernes 2 de febrero, el siguiente es 9).
La fecha inicial y la final las selecciono como dije antes de 2 monthcalendar y luego paso la seleccion del los monthcalendar a 2 edit. La complicación era realizar el for o while que recorra las fechas desde la inicial a la final. Lo resolví gracias a la ayuda del hilo mencionado pero tuve que dar vueltas porque no mencionaban los tipos de datos utilizados.
Acá les dejo el código para que lo usen los que necesitan resolver este tipo de problemas.

Código Delphi [-]
procedure TForm6.Button1Click(Sender: TObject);
var i:integer;
diainicio,diafin:double;

begin
    diainicio:=strtodate(edit1.Text);
    diafin:=strtodate(edit2.Text);
    i:=1;
    while (CompareDate(diainicio, diafin) = -1) or (CompareDate(diainicio, diafin) = 0)   do
      {Los valores del while provienen de la unidad DateUtils (agregar en las uses)
      que utilizando la función CompareDate podemos comparar datos. Hay 3 tipos de
      respuestas a la comparación: el -1 significa LessThanValue o sea que el primer
      valor es menor el que segundo; el 0 significa EqualsValue  valores iguales y el
      1 significa GreaterThanValue  que el primero es mayor que el segundo }
      begin
                ztable1.Edit;
                ztable1.Last;
                ztable1.Next;
                ztable1.Insert;
                ztable1.FieldByName('semana').Value:=diainicio;//fecha de la semana
                ztable1.FieldByName('n_semana').Value:=i;//numero de la semana
                ztable1.Post;
                ztable1.Refresh;
                diainicio := diainicio + 7;//incremento 7 días
                 i:=i+1;
      end;
     showmessage('Se Generaron con Éxito las Semanas Para las Horas');
end;

ContraVeneno 01-02-2007 17:28:49

argh... ¿porque usar componentes TEdit para fechas cuando puedes usar TDateTimePicker?

:confused::confused::confused::confused::confused::confused:


La franja horaria es GMT +2. Ahora son las 18:31:55.

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