Validar formato fecha

Hola, espero que te encuentres muy bien
Anteriormente te pregunte acerca de la validación de un campo.
Te explico tengo un texto en el que estoy ingresando una fecha, hice un algoritmo para validar el formato de la misma y para validar los dígitos que se pueden ingresar. El problema que tengo es que no se en que evento colocar este algoritmo de tal manera que después de digitar la fecha me aparezca el mensaje de formato invalido o formato correcto.
Intenté en keyup y keydown pero después de teclear cualquier letra me aparece el mensaje. También hice la prueba en los eventos mouseLeave, mouseDown y mouseUp pero no puedo obtener lo que quiero, te agradezco de antemano por todo.El código que estoy utilizando es el siguiente:
--Validación de fecha
fecha= member ("titu_fena_f").text
longitudfech=fecha.length
digits = "0123456789/"
fechaok=" "
band=0
dia=""
mes=""
anio=""
contdia=0
--VALIDACION DE NUMEROS Y "/"
repeat with i=1 to longitudfech
caracterfech=chars(fecha,i,i)
if digits contains caracterfech then
fechaok=fechaok&caracterfech
else
band=band+1
end if
end repeat
--VALIDACION DE DIA Y MES
if band <> 0 then
alert "El formato de la fecha es incorrecto. Ingreselo nuevamente (dd/mm/aaaa)"
else
findia=longitudfech
repeat with i=1 to findia
chardia=chars(fecha,i,i)
if chardia="/" then
cont=cont+1
else
if cont=0 then
dia=dia&chardia
else
if cont=1 then
mes=mes&chardia
else
if cont=2 then
anio=anio&chardia
else
i=findia
end if
end if
end if
end if
end repeat
if dia=" " then dia=0
if mes=" " then mes=0
dia=integer(dia)
mes=integer(mes)
anio=integer(anio)
if dia<1 or dia>31 then
alert "Día inválido. Los días válidos están entre 1 y 31. Ingrese nuevamente"
else
if mes<1 or mes>12 then
alert "Mes inválido. Los meses válidos están entre 1 y 12. Ingrese nuevamente"
else
if cont= 2 and anio ="" then
alert "Anio incorrecto.Por favor ingrese un valor"
else
if anio< 1900 then
alert "Anio incorrecto. Los valores válidos van desde 1900"
end if
dia=integer(dia)
mes=integer(mes)
anio=integer(anio)
end if
end if
end if
(dia)&string(mes)&string(anio)
end if
O no se si existe alguna función que valide los datos tipo fecha.
Gracias por todo y que tengas un excelente día

1 respuesta

Respuesta
1
Estas haciendo una cosa muy rara. Para trabajar con fechas debes usar las utilidades de lingo para ello. Además deberías usar delimitadores. Te pogo aquí un ejemplo para que hagas prueba en la ventana mesagge de director
the itemdelimiter=("/")
fecha="12/3/1998"
put fecha.item[1]
-- "12"
put fecha.item[2]
-- "3"
put fecha.item[3]
-- "1998"
fecha_lingo =date(value(fecha.item[3]), value(fecha.item[2]), value(fecha.item[1]))
put (fecha_lingo ).day
-- 12
put (fecha_lingo ).month
-- 3
put (fecha_lingo ).year
-- 1998
Por otra parte e suna lastima que lingo no tenga rutinas como c++ o visual basic para detectar la salida de un campo de texto. Lo único que puedes hacer es usar la rutina endsprite para hacer la validación de fecha al desaparece el texto del score.
Estas haciendo una cosa muy rara. Para trabajar con fechas debes usar las utilidades de lingo para ello. Además deberías usar delimitadores. Te pogo aquí un ejemplo para que hagas prueba en la ventana mesagge de director
the itemdelimiter=("/")
fecha="12/3/1998"
put fecha.item[1]
-- "12"
put fecha.item[2]
-- "3"
put fecha.item[3]
-- "1998"
fecha_lingo =date(value(fecha.item[3]), value(fecha.item[2]), value(fecha.item[1]))
put (fecha_lingo ).day
-- 12
put (fecha_lingo ).month
-- 3
put (fecha_lingo ).year
-- 1998
Por otra parte e suna lastima que lingo no tenga rutinas como c++ o visual basic para detectar la salida de un campo de texto. Lo único que puedes hacer es usar la rutina endsprite para hacer la validación de fecha al desaparece el texto del score.
On endsprite me
end
No sabes como te agradezco por tu ayudas, lo que sucede es que soy novata en lingo, se programar pero como no conozco todas las funciones de lingo me defiendo haciendo algoritmos para solucionar
En realidad te agradezco bastante y espero que tengas muchos éxitos en todo lo que te propongas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas