Foros del Web » Programación para mayores de 30 ;) » .NET »

validar fecha en webform

Estas en el tema de validar fecha en webform en el foro de .NET en Foros del Web. Hola, Tengo que validar fechas en un webform y para ello he creado tres textBox, uno para el dia, otro para el mes y otro ...
  #1 (permalink)  
Antiguo 25/03/2004, 11:56
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
validar fecha en webform

Hola,

Tengo que validar fechas en un webform y para ello he creado tres textBox, uno para el dia, otro para el mes y otro para el año. Me interesa poder validar estos tres campos de forma conjunta y comprobar que con el conjunto de los tres (dia,mes y año) se puede generar un datetime correcto. La validación entiendo que la tendré que hacer de servidor.

Yo de momento cojo los tres campos, me declaro un datetime pasandole al constructor los campos que me ha introducido el usuario y hago un:

System.DateTime.Parse

para comprobar si son correctos los datos. Para mostrar el mensaje de error en caso de haber enviado datos incorrectos he pensado que lo mejor es poner un customvalidator y cuando salta la excepción asignarle un errormessage. Esto lo he probado pero no me aparece ningun mensaje.

El efecto que quiero conseguir es mostrar debajo de los tres campos un mensaje de error de color rojo.

Voy por buen camino o me aconsejais hacer esta validación de otra manera?

gracias.
  #2 (permalink)  
Antiguo 26/03/2004, 17:42
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
para ello he creado tres textBox
No te sería más facil usar 3 dropdowlist (uno para el día (1 al 31) otro para el mes (1 al 12) y otro para el año). ?? con ello el usuario no puede poner cualquier cosa si no tiene que seleccionar los datos

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 10/04/2004, 23:03
 
Fecha de Ingreso: octubre-2003
Ubicación: Huancayo - Peru
Mensajes: 32
Antigüedad: 20 años, 6 meses
Puntos: 0
Alguito mas fácil :)

Hola, bueno, eso de poner los números en DropdownLists te puede generar errores ya que das la posibilidad de que el usuario pueda seleccionar la fecha 31/02/1993 por ejemplo que por ser Febrero 31, no existe y si te vas a poner a validar todos los dropdown lists, tomando en cuenta los años bisiestos y todo eso te va a salir un código un poco pesado.

te parece si,
defines una variable de tipo cadena, en ella concatenas tus tres textbox en forma de fecha por ejemplo

-------------------
dim FechaValidar as string
FechaValidar = textbox1.text & "/" & textbox2.text & "/" & textbox3.text
--------------------

entonces luego
defines una variable de tipo fecha y otra de respuesta y realizamos la validacion

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

dim FechaVal as date
dim resp as integer
try
FechaVal = cDate(FechaValidar)
resp = 0 'fecha valida
catch
resp = 1 'fecha no valida
end try


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

esto es verificar los datos por transformación, entonces el visual verifica la fecha y te captura si hay un error de conversión o si el usuario ha ingresado letras en vez de numeros , lo que significa que la fecha no es valida y por lo tanto te devuelve 1, y te devuelve 0 si la fecha es valida.

Espero que te haya servido.
__________________
La fidelidad es a la vida de las emociones lo que la coherencia a la vida del intelecto. ("El Retrato de Dorian Gray" - Oscar Wilde)
  #4 (permalink)  
Antiguo 12/04/2004, 09:28
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
defines una variable de tipo fecha y otra de respuesta y realizamos la validacion
Eso puede funcionar pero dependiendo de como tengas configurado el idioma de tu server.. ya que si lo tienes en ingles la funcion Cdate tomará el formato mm/dd/YYYY y si lo pones de la manera dd/mm/yyyy entonces indicará que no es una fecha válida... ,

De todas formas puedes crear una funcion para que se te haga mas facil pasar los parámetros siempre en formato dd/mm/yyyy

Ejemplo:

Vb.Net
Cita:
Private Function IsDateValid(ByVal d As Integer, ByVal m As Integer, ByVal y As Integer) As Boolean

'y = year
'm = month
'd = day
Try
Dim _date As DateTime = New DateTime(y, m, d)
Return True
Catch ex As ArgumentOutOfRangeException
Return False
End Try

End Function
Y para llamarla

Cita:
dim d as integer = Cint(textbox1.text)
dim m as integer = Cint(textbox2.text)
dim y as integer = Cint(textbox3.text) 'En formato yyyy = 2004

If IsDateValid (d, m, y) Then
Response.Write("Fecha Valida")
Else
Response.Write("Fecha Inválida")
End If
C#
Cita:
private bool IsDateValid (int d, int m, int y)
{
try
{
DateTime date = new DateTime (y, m, d);
return true;
}
catch (ArgumentOutOfRangeException)
{
return false;
}
}
Y para llamarla:

Cita:
int d = Convert.ToInt32(TextBox1.Text);
int m = Convert.ToInt32(TextBox2.Text);
int y = Convert.ToInt32(TextBox3.Text);

if (IsDateValid (d,m,y))
Response.Write("Fecha Válida");
else
Response.Write("Fecha Inválida");
Saludos y espero te sirva el ejemplo
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 08:36.