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

No consigo introducir una fecha valida en una DB

Estas en el tema de No consigo introducir una fecha valida en una DB en el foro de ASP Clásico en Foros del Web. Saludos: El caso es que estoy intentando validar que el campo "fechavalidezoferta" sea una fecha. Cuando tecleo un valor del tipo "12/10" al guardarse en ...
  #1 (permalink)  
Antiguo 11/09/2004, 20:05
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
No consigo introducir una fecha valida en una DB

Saludos:

El caso es que estoy intentando validar que el campo "fechavalidezoferta" sea una fecha.

Cuando tecleo un valor del tipo "12/10" al guardarse en la DB lo hace como 12/10/2004 cuando estimo que debería dar un error ¿no?. Sin embargo si meto "12/" o "dfldf" o lo dejo blanco, entonces me devuelve el siguiente error en vez de poner "campo "fechavalidezoferta" contiene una fecha incorrecta".





Tipo incorrecto. /gestion_mayoristas/ofertas/insertar/insertar_ofertas_result.asp, line 55


Les quedaría muy agradecido si le paso el código y me dan una pista de donde puedo estar metiendo la pata.

Código:
 
<!--#INCLUDE file="../../../adovbs.asp"-->
<% 
Set Upload = Server.CreateObject("Persits.Upload.1")
Upload.Save("c:\obradoiroweb\obradoiroweb\turofertas\images\prueba")
%>
<%
set Conn= Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "DSN=clubviajesoferta.com.turofertas"
Conn.open
Set RS=Server.CreateObject("ADODB.Recordset")
rs.activeconnection=conn 
rs.source="ofertasmayoristas"
rs.Locktype = adLockOptimistic
rs.CursorType = adOpenDinamic
rs.open
'Recupera las variables del formulario
referenciaoferta= Trim(upload.Form("referenciaoferta"))
fechavalidezoferta= Trim(upload.form("fechavalidezoferta"))
imagenproducto=trim(upload.form("imagenproducto"))
insertar="True"
'Validamos el formulario
if referenciaoferta= "" then
 response.write("<ul><div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""2"" color=""#FB4C50"">" & "El campo <em>""Referencia""</em> está vacio</font></div>")
 insertar="False"
end if

If NOT IsDate(fechavalidezoferta) then
 response.write("<div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""2"" color=""#FB4C50"">" & "El campo <em>""Fecha Validación""</em> contiene una fecha incorrecta </font></div>")
 insertar="False"
end if
'Añadimos el registro
 rs.addnew
rs("referenciaoferta")=upload.form("referenciaoferta")
rs("fechapublicacionoferta")=upload.form("fechapublicacionoferta")
5rs("fechavalidezoferta")=upload.form("fechavalidezoferta")
'Este For-Next hace que el fichero se suba al servidor
ruta="../images/prueba/"
For Each File in Upload.Files
  rs(File.name)=ruta & (File.filename)
Next
If Insertar="True" then
 rs.Update
%>
	  <p><strong>LA OFERTA SE HA AÑADIDO A LA BASE DE DATOS CORRECTAMENTE</p></strong></font>
<%
else
 rs.cancelupdate
 response.write("<div align=""center""><br><strong><font face= ""Arial, Helvetica, sans-serif"" size=""3"" color=""#FB4C50"">" & "El producto no se ha añadido a la base de datos. <br>El/los campo/s arriba indicados no contienen datos o no son correctos. <p> <a href=""javascript:history.back()"">Pulse aquí para poder completar los datos correctamente</strong></font></a></div>")
End if
rs.close
conn.close
%>
Muchas gracias
  #2 (permalink)  
Antiguo 11/09/2004, 20:22
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Recuerda que las fechas se manejan con sumas. por lo que escribes alcanza a dar una sumatoria de una fecha válida.
  #3 (permalink)  
Antiguo 11/09/2004, 20:26
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Lo que yo haría es :

isdate(fechaaevaluar)
  #4 (permalink)  
Antiguo 11/09/2004, 20:27
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Creo que te entiendo. Es decir que entonces el hacer la validación con el Isdate no es suficiente.

Lo he intentado con unas cajas en javascript (1 para el mes, 1 para el año y otra para el día) pero el script que encontré solo me dejaba poner como máximo fechas del año actual y a mi me harian falta de más años.
  #5 (permalink)  
Antiguo 11/09/2004, 20:33
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
A ver..

Hasta que fecha es válida para tí, tienes algun limite ?
  #6 (permalink)  
Antiguo 11/09/2004, 20:35
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
En principio la fecha inicial será la fecha en la que el usuario incluya la oferta en la pagina web y la fecha final puede ser cualquiera a partir de esa fecha.
  #7 (permalink)  
Antiguo 11/09/2004, 20:44
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Ok. ya entendí.

Es algo trabajoso pero funciona y es la unica forma de averiguarlo :

1.- Checa que haya 3 ( / )
2.- Extraes cada valor antes de cada / por ejemplo :

09/09/2004
dias=09
mes=09
año=2004

' verifica que el mes sea menor a 12

En una tabla (select case) checa cuantos días hay en el mes

Si es año bisiesto

case 1: 31
case 2: 29

así sucesivamente...

si no es año visiesto entonces otro select case :

case 1: 31
case 2: 28

3.- Toma el mes y compara con los días que ha escrito para cerificar que la fecha está en el rango

Por ultimo el año que sea mayor o igual a la fecha actual.

Espero me hayas entendido Ok.
  #8 (permalink)  
Antiguo 11/09/2004, 20:53
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
No son 3 son 2 (/)

Oye, Tengo un script que te da la fecha correcta en combos, segun sea el mes y todo, año bisiesto

Te evitas de lios, lo busco y te lo mando. Es la mejor solución o como ves?
  #9 (permalink)  
Antiguo 11/09/2004, 21:03
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Pues si me lo envias mejor, porque yo estuve buscando pero no se me adapta ninguno.

Muchas Gracias por todo
  #10 (permalink)  
Antiguo 11/09/2004, 21:10
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
x M.P.

Suerte,
  #11 (permalink)  
Antiguo 11/09/2004, 21:17
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Asi ya recibes una fecha válida y no andas validando y todo ese rollo.
  #12 (permalink)  
Antiguo 11/09/2004, 21:25
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
for i=cint(datepart("yyyy",date)) to 2006 step 1

en vez de 1900
  #13 (permalink)  
Antiguo 11/09/2004, 21:30
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Descubri un error de dedo :

function anio_onchange()
lenar()

sustituye por:

function anio_onchange()

Me falti una l para que diga llenar :
llenar()
  #14 (permalink)  
Antiguo 11/09/2004, 21:34
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
El script ya está corregido y funcionando. Ahora me voy a dormir porque en España son las 05:04 AM y tengo ya mucho sueño. Mañana intentaré hacerlo funcionar en un formulario junto con la DB y el ASPUpload, puesto que también deben subir imágenes.
Muchisimas gracias. Te lo agradezco muchísimo. Ya sabes que en todo lo que pueda ayudarte, no tienes más que pedirmelo, por el foro, privado o email. como más te guste
  #15 (permalink)  
Antiguo 11/09/2004, 21:36
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Ok tambien tienes mis otros correos.

Saludos,
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:54.