Buenas, estoy haciendo una agenda de turnos y tengo que generar la agenda de acuerdo a los siguientes parametros, cada dia laboral tiene su hora inicial y su hora final, y los turnos se dividen de acuerdo a la frecuencia: el codigo es el siguiente:
Código Delphi
[-]while (fecha_actual<=fecha_hasta)do
begin
dia_actual:=Longdaynames[dayofweek(fecha_actual)];
for dia in dias_laborales do
begin
if (dia_actual=dia.dia) then
begin
hora_i:=dia.hora_desde;
hora_f:=dia.hora_hasta;
while (hora_i < hora_f) do
begin
dsw.ZQuery2.SQL.Text:='insert into turno (id_medico,id_paciente,fecha,hora,dia) value ('+inttostr(medicoActivo.id_medico)+',NULL,"'+FormatDateTime('yyyy/m/d',fecha_actual)+'","'+timetostr(hora_i)+'","'+dia.dia+'")';
dsw.ZQuery2.ExecSQL;
hora_i:=hora_i+fre;
end;
end;
end;
fecha_actual:=IncDay(fecha_actual,1);
end;
el problema esta al evualuar la condicion del WHILE, por ejemplo si la frecuencia es de 30 minutos y la hora final es a las 20:00, el ultimo turno generado es a las 19:30, que es como deberia ser , Pero si cambio la frecuencia a 20 minutos, y la hora final SIGUE siendo 20:00, el ultimo turno generado es a las 20:00 cuando DEBERIA ser a las 19:40, no encuentro motivo, ya que la condicion esta Menor estricto no deberia suceder esto, sin embargo sucede, je misterios de la vida, alguien tiene idea q puede ser...