Foros del Web » Programando para Internet » ASP Clásico »

Eterno problema... comprovar si el usuario ha introducido bien una fecha.

Estas en el tema de Eterno problema... comprovar si el usuario ha introducido bien una fecha. en el foro de ASP Clásico en Foros del Web. Hola a todos! Hoy me ha tocado descubrir que comprobar si una fecha está bien introducida es mas xungo de lo que pensaba... Tengo una ...
  #1 (permalink)  
Antiguo 19/04/2005, 01:02
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
Pregunta Eterno problema... comprovar si el usuario ha introducido bien una fecha.

Hola a todos!

Hoy me ha tocado descubrir que comprobar si una fecha está bien introducida es mas xungo de lo que pensaba...

Tengo una tabla donde un campo es de tipo fecha. Sólo quiero comprobar si el usuario introduce la fecha en formato correcto o no (dd/mm/aaaa) y si es que no, que aparezca un mensaje emergente advirtiéndole que si no la introduce correctamente no podrá continuar. (continuar significaría clicar el botón enviar para guardar los datos en la tabla, pq si la fecha está mal da el error de tipo de datos en el campo fecha) Entonces sería que al clicar el botón Enviar mostrara el mensaje si la fecha es incorrecta y si no, que guardara los datos normalmente.

Gracias por adelantado... Si consigo superar este reto me sentiré muy satisfecha!
  #2 (permalink)  
Antiguo 19/04/2005, 01:32
Avatar de m0j0  
Fecha de Ingreso: abril-2005
Mensajes: 5
Antigüedad: 19 años, 2 meses
Puntos: 0
Mensaje

Hola,

Pues en vbSCript hay una función que te será bastante útil. La función IsDate() determina si el argumento que le pasas es una fecha válida.

Por ejemplo:
IsDate("19/04/2005") devolverá true
IsDate("En un lugar de la Mancha...") devolverá false
Así que para comprobar si un campo es una fecha o no, primero comprueba que no está vacío, luego utiliza la función IsDate para comprobar si es una fecha válida, sin preocuparte por el formato en el que la introduzca.

Y por último, si en tu base de datos el formato de la fecha es dd/mm/aa, a la hora de insertar la fecha en la base de datos, utiliza la función FormatDataTime para darle tú formato. Por ejemplo:

FormatDateTime(Now, vbShortTime) cogería la fecha actual y la expresaría en formato de fecha corta.
Un saludo, espero que te sirva.


  #3 (permalink)  
Antiguo 19/04/2005, 01:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
Muchas gracias m0j0, pero... NECESITO MÁS!!! Es que no se donde poner esta función ni como... Antes del botón enviar? Después? Con while...wend?, con if...else?, ahgggggg!!!!!!!!!! Que puedo hacer???????
El tema está en que esta función que me recomiendas ya la había encontrado mirando manuales, el foro, etc... Pero a la hora de implementarla... óstia por aquí óstia por allá!!!! Me puedes guiar un poquito...? me sería de grandísima ayuda.

Hasta ahora y gracias otra vez!
  #4 (permalink)  
Antiguo 19/04/2005, 01:45
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
La fecha de access es en formato: dd/mm/aaaa
  #5 (permalink)  
Antiguo 19/04/2005, 03:48
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 2 meses
Puntos: 3
A ver V€ro,

Se primeras para sacar la fecha en formato corto:

<%=FormatDateTime(Now, vbShortDate)%> ó <%=date%>


Con <%=FormatDateTime(Now, vbShortTime)%> lo que sacas es la hora en formato corto.


=====================

En cuanto a dónde, cómo hacer la verificación y cuando insertar el dato:

Yo lo que haría es mandar el formulario a su destino


formFecha.html ó formFecha.asp
<%
if Request.QueryString("falloFecha")<>false then
%>
<strong>La fecha ha sido insertada incorrectamente.</strong>
<%end if%>
<form action="finFecha.asp" method="post">
...
<input type name="fecha" type="text" id="fecha">
...
</form>


Entonces, al comienzo del archivo destino (finFecha.asp) hacer la verificación. Y si está no se cumple redirigir al usuario al archivo del formulario para que vuelva a insertar la fecha de nuevo correctamente, pudiendo incluso mostrarle un mensaje de error para indicarle lo que pasó. Si se cumple poner la fecha en formato corto e insertar datos en la base:


finFecha.asp
<%
Dim vfecha

vfecha=Request.Form("fecha")

if (vfecha="") OR (IsDate(vfecha)<>true) then
Response.Redirect("formFecha.html?falloFecha=true" ) ' *** Ó LA URL QUE SEA

else

vfecha = FormatDateTime((Request.Form("fecha")), vbShortDate)
' Y HACER LA SENTENCIA DEL INSERT DÓNDE EL VALOR A INSERTAR EN CAMPO FECHA SERÁ vfecha CON EL FORMATO dd/mm/aaaa

end if
%>


Creo que eso es todo. Admito correcciones ó sugerencias.

Espero que sirva para el propósito deseado.

Agur.

================================================== ========
zacktagnan.
  #6 (permalink)  
Antiguo 19/04/2005, 03:59
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
ok zacktagnan!

creo que entendí, voy a probar ahora sólo me falta como hacer lo del mensaje a mostrar para advertir al usuario. Es un enigma para mi, lo he probado con un alert pero estamos en las mismas no se donde ponerlo ni como, me dan errores por todas partes.
muchísimas gracias!!!!!!!!
  #7 (permalink)  
Antiguo 19/04/2005, 04:16
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
OTRA COSILLA... EN ESTE CÓDIGO TAN ÚTIL PARA MI QUE ME HAS PRESTADO:
<%
Dim vfecha

vfecha=Request.Form("fecha")

if (vfecha="") OR (IsDate(vfecha)<>true) then
Response.Redirect("formFecha.html?falloFecha=true" )

NO SE QUE SIGNIFICA ...?falloFecha=true")...

SUPONGO QUE TIENE QUE VER CON ...<%
if Request.QueryString("falloFecha")<>false then
%>... QUE MENCIONAS MÁS ARRIBA DE TU MENSAJE


ME LO PODRÍAS EXPLICAR????????

MIL GRACIAS
  #8 (permalink)  
Antiguo 19/04/2005, 05:45
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 2 meses
Puntos: 3
Precisamente, esta línea

Response.Redirect("formFecha.asp?falloFecha=true")

(al final, para esto, el archivo del formulario debe ser .asp)

es la que gestiona que en el archivo del formulario [formFecha.asp], se muestre el MENSAJE DE ERROR.

Como te expuse en el mensaje anterior, cuando se recogen los datos del formulario en [finFecha.asp] es cuando se hace la verificación y si no se cumple se devuelve al usuario a la página del formulario:

SI vfecha=VACíO Ó vfecha no es del tipo FECHA ENTONCES
Redireccionar al usuario a formFecha.asp con la variable falloFecha igual a true

SINO
Poner la fecha a formato corto (dd/mm/aaaa)
Hacer el INSERT

FIN DEL SI

Ya de vuelta, en el formFecha.asp, hemos llegado además con una variable
falloFecha=true

Y esto es lo que hará que se muestre el MENSAJE DE ERROR:
La fecha ha sido insertada incorrectamente.

al cumplirse la condición expuesta antes del código del formulario

<%
if Request.QueryString("falloFecha")<>false then
%>
<strong>La fecha ha sido insertada incorrectamente.</strong>
<%end if%>
<form action="finFecha.asp" method="post">
...
<input type name="fecha" type="text" id="fecha">
...
</form>

Si no llega [falloFecha=true] no se mostrará el MENSAJE.

A ver si te aclaras con esto

Agur.


================================================== ========
zacktagnan.
  #9 (permalink)  
Antiguo 19/04/2005, 06:24
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
vero, te lo ha explicado muy bien. con ésto deberías de tener suficiente para hacerlo todo. Si tienes conceptos básicos como el redirect muy verdes, te aconsejo que veas antes de nada (y, sobre todo, antes de ponerte a hacer una aplicación) un buen tutorial de asp.

Un saludo.
  #10 (permalink)  
Antiguo 19/04/2005, 07:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola trasgukabi!
Me he leído unos 3 tutoriales y he practicado con ellos, pero... sin mucho éxito. Estoy con esto sola y me cuesta mucho aprenderlo partiendo de la base de que de visual basic se lo mínimo. Gracias por el consejo igualmente!

Holaaaaaaaaaaa zacktagnan!!!!
Resulta que si que lo había entendido bien pero como lo había probado unas veces sin resultado alguno pensé que alomejor sería otra cosa...
La qüestión es que no me aparece el mensaje en ningún lugar de la página cuando vuelve, porque volver si vuelve (al menos...), cuando introduzco la fecha mal, vuelve a la página con la tabla en blanco y sin la frase "Vuelve a introducir los datos correctamente"...
Hasta este punto mi poca sabiduría en el tema se queda estancada, se que soy una pesada zacktagnan, pero la angústia de ya no saber que hacer es mu mala y me juego el puesto de trabajo. Dime algo porfavor, aunque sean palabras de consuelo.
Nunca agotaré las gracias que te doy.
  #11 (permalink)  
Antiguo 19/04/2005, 07:46
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
Se me olvidaba!!!!!!!!!!!

zacktagnan eres por ahora el mejor que me he encotrado a la hora de explicar las cosas. Es genial!!!!!!! Tienes madera de buen profesor!!! Te lo has pensado? Ser profe de informática da pasta!
Bueno hasta ahora!!!!!!!!!!!!!!!
  #12 (permalink)  
Antiguo 19/04/2005, 08:22
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
La solución es: Paciencia, tranquilidad y sobre todo, ganas de aprender por ti misma.

Te regresa la página en blanco .............¿y?.............¿ya viste el código de dicha página?, esta es para verificar si se ha formado el HTML o no, tal vez solo sea una etiqueta mal cerrada.

Estoy seguro que, como todos aquí, zacktagnan tendrá otras cosas que hacer y no puede o no quiere estar pegado al computador resolviendo problemas a diestra y siniestra, así que no dependas de una persona para resolver tu problema, como te mencioné al principio: paciencia, tranquilidad y ganas de resolverlo por ti misma.

Debuguear, debuguear, pruebas de escritorio, nada que ningún profesor de informática no te diria.

Saludos
  #13 (permalink)  
Antiguo 19/04/2005, 08:38
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
Tienes toda la razón Myakire!
Pero es que después de haber probado mil veces sin éxito alguno y se te acaban las ideas, huyes desesperadamente hacia este rincón esperanzador (el Foro). Lo peor es que tengo que estar las ocho horas o más de jornada con el mismo programa y no puedo descansar ni 1 minuto, como comprenderás mi cabeza se obstruye y busca una salida. Pero tranquilo intentaré llevarlo lo mejor que pueda...
Gracias por todo
  #14 (permalink)  
Antiguo 19/04/2005, 17:40
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
Pero estás trabajando (y me refiero a trabajo remunerado, no a práctica) en un programa en ASP?
  #15 (permalink)  
Antiguo 20/04/2005, 00:34
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
Si trasgukabi, trabajo remunerado. El programa que tengo que hacer es bastante sencillo si sabes ASP, pero alguien que se ha tirado a la piscina sin mirar como yo, que tengo muy poca idea del vbscript, pues... lo tengo mu negro!!! Acepté hacer el programa pensando que me saldría bien pero va a ser que no!!

Hasta pronto!!!!!
  #16 (permalink)  
Antiguo 20/04/2005, 02:20
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
hace poco alguien de este foro estaba en la misma situación que tú y le respondieron algo sabio: "lo mejor es que subcontrates tu trabajo y te dediques a mirar, aprender y llevarte un % del dinero". Aquí tienes a unos cuantos buenos programadores que puedes elegir.

Un saludo.
  #17 (permalink)  
Antiguo 20/04/2005, 02:40
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 2 meses
Puntos: 3
¡¡ zacktagnan al rescate !!

Bueno, V€ro, espero que está sea la definitiva.

Acabo de probar TODO el código que te pase y funciona TODO, saliendo el mensaje cuando se produce el ERROR de no rellenar el campo del formulario referente a la fecha ó cuando la fecha no tiene un formato adecuado.
(Fechas aceptada, por ejemplo: 12/4/5)
(Fechas no aceptada, por ejemplo: 12/34/5)

He añadido un campo 'nombre' para que veas, además, que funciona pasando más datos que sólo el de fecha.

Así que ahí va todo el código, de nuevo, tal y como lo he probado. Cópialo tal y como está en cada archivo, a través de la ventana de código. Incluyo las etiquetas de BODY.
Para la prueba, respeta los nombres de los archivos [formFecha.asp - finFecha.asp] y ten en cuenta las URLs a la hora de probarlo en el navegador. Después de que veas que va bien, podrás adaptarlo a la forma que quieras


Bueno, ahí va pues

== Código =================================================

formFecha.asp
--------------

<body>
<p><span style="font-weight:bold; text-decoration:underline;">Formulario de Comprobaci&oacute;n de Fecha</span><br>
<br>
Rellena los siguientes campos (el de fecha es obligatorio)
</p>
<form action="finFecha.asp" method="post" name="formFecha" id="formFecha">
Nombre:
<input name="nom" type="text" id="nom">
<br>
<br>
Fecha:
<input name="fecha" type="text" id="fecha">
<br>
<br>
<input type="submit" name="Submit" id="Submit" value="Enviar">
</form>
<%
if Request.QueryString("falloFecha")<>false then
%>
<p><span style="color:red; font-weight:bold;">El campo 'fecha' no fue rellenado &oacute; su valor es incorrecto.</span></p>
<%end if%>
</body>


--------------------------------------------------------------------------


finFecha.asp
------------

<body>
<%
Dim vnom,vfecha

vnom=Request.Form("nom")
vfecha=Request.Form("fecha")

if (vfecha="") OR (IsDate(vfecha)<>true) then
Response.Redirect("formFecha.asp?falloFecha=true") ' *** Ó LA URL QUE SEA

else
vfecha = FormatDateTime((Request.Form("fecha")), vbShortDate)
%>
Hola, <%=vnom%>.<br>
La fecha que insertaste es: <%=vfecha%><br>
<br>
<input name="otraFech" type="button" id="otraFech" value="Otra Fecha" onclick="javascript:history.go(-1);">
<%
' Y HACER LA SENTENCIA DEL INSERT DÓNDE EL VALOR A INSERTAR EN CAMPO FECHA SERÁ vfecha CON EL FORMATO dd/mm/aaaa

end if
%>
</body>

== Fin de Código =============================================


Pues eso es todo, sólo te queda crear los dos archivos [formFecha.asp y finFecha.asp] e insertar en cada uno de ellos el código correspondiente que te paso.

Si estás ejecuntando las páginas localmente, supongo que tendrás instalado algo como el IIS y visualizarás tu sitio web desde
http://localhost/miWeb/nombreArchivo.extension

Si tienes ya un dominio, supongo que antes de probar las cosas las subirás a dicho dominio y las verás desde, por ejemplo,
http://www.miWeb.com/nombreArchivo.extension

Bueno, espero que ya te salga TODO. Tiene que salir.

Espero que te salga el trabajo que te han pedido y no te despidan.

Aún así, tienes suerte de tener ese trabajo y sobre todo cobrar por ello

Yo, estoy terminando unas prácticas y SIN COBRAR NADA. Y no llegamos a más. A ver cuando cambia la cosa.

Pues nada, saludos varios. Agur.


================================================== ========
zacktagnan.
  #18 (permalink)  
Antiguo 20/04/2005, 04:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 73
Antigüedad: 19 años, 4 meses
Puntos: 0
Zacktagnan eres un cielo!!!!!!!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:38.