Saludos estimados amigos, estoy tratando de realizar un horarios para citas medicas
hora inicial , hora final e intervalo, uso esta rutina, pero tengo un problema en momentos me funciona perfectamente pero en ocasiones aleatorias se queda colgado el bucle y genera el horario infinitamente, agradecido de su tiempo y si pueden orientarme el por qué del comportamiento i/o otra forma de atacar el procedimiento, gracias
Ejemplo
formato de hora en 12 h
hora inicio: 8:00
hora fin: 12:00
intervalo: 30
8:00 am - 8:30 am
8:30 am - 9:00 am
9:00 am - 9:30 am...
así sucesivamente
Hra_Inicio = thisform.txt_HI.Value
Hra_Final = Thisform.txt_HF.Value
***separamos la hora de Inicio en hora,minutos y segundos de la variable de entrada
xhora=SUBSTR(Hra_Inicio,1,2)
xmin=SUBSTR(Hra_Inicio,4,2)
xseg = SUBSTR(Hra_Inicio,7,2)
***separamos la hora Final en hora,minutos y segundos de la variable de entrada
xhoraF=SUBSTR(Hra_Final,1,2)
xminF=SUBSTR(Hra_Final,4,2)
xsegF = SUBSTR(Hra_Final,7,2)
Intervalo = VAL(thisform.txt_Intervalo.Value )
IF Intervalo = 0 then
MESSAGEBOX("Debe indicar el Intervalo..",0+16,"Mensaje del Sistema")
RETURN
ENDIF
lcCodMedico = thisform.codmedico
lcCodTurno = thisform.codturno
lcDiaHoy = DATE()
*** convertimos la hora de inicio en formato de HORA
tFHora = DATETIME(YEAR(DATE()),MONTH(DATE()),DAY(DATE()),VAL(xhora),VAL(xmin),VAL(xseg))
resultado = TTOC(tFHora+0*60,2)
*** convertimos la hora Final en formato de HORA
tFHoraF = DATETIME(YEAR(DATE()),MONTH(DATE()),DAY(DATE()),VAL(xhoraF),VAL(xminF),VAL(xsegF))
resultadoF = TTOC(tFHoraF+0*60,2)
** inicio del bucle para generar los intervalos
DO WHILE CTOT(resultado) <= CTOT(resultadoF) AND LASTKEY() <> 27
tFHora = DATETIME(YEAR(DATE()),MONTH(DATE()),DAY(DATE()),VAL(xhora),VAL(xmin),VAL(xseg))
**sumanos el intervalo solicitado por el usuario
resultado = TTOC(tFHora+0*60,2)
*se inserta el registro en la tabla
INSERT INTO tb_horarios VALUES(xCodHorario,;
lcCodMedico,;
resultado,;
0,;
lcCodTurno,;
lcDiaHoy,;
"1")
** separamos en hora,minuto y segundo la nueva hora ya con el intervalo sumado para acumular y sumar el siguiente intervalo
resultado = TTOC(tFHora+Intervalo*60,2)
xhora=SUBSTR(resultado,1,2)
xmin=SUBSTR(resultado,4,2)
xseg = SUBSTR(resultado,7,2)
ENDDO