Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   maskedit: como corroborar datos validos de fecha? (https://www.clubdelphi.com/foros/showthread.php?t=57208)

ale_metall 08-06-2008 01:39:06

maskedit: como corroborar datos validos de fecha?
 
necesito ingresar en una consulta parametrica un dato tipo fecha en un maskedit; una vez hecha la mascara correspondiente.. en mi caso: !99/99/00;1;_ como puedo controlar el ingreso de datos para que no me quede algun espacio vacio o dato erroneo y evitar el error al ejecutar la consulta?? osea.. como pregunto si el dato fecha del maskedit esta completo y con datos validos para una fecha?? q no me deje ingresar un mes 13 por ej. O si hay otra forma de controlar esto, estaria agradecido si pueden hacermela saber.

saludos..

dec 08-06-2008 02:52:15

Hola,

Una posible solución, que encontré en Torry's, es usar cierta función de la unidad "SysUtils" y comprobar si se produce una excepción o no:

Código Delphi [-]
function IsValidDate(AString : string; 
 var ADateTime : TDateTime): Boolean;
begin
  Result := True;
  try
    ADateTime := StrToDateTime(AString);
  except
    ADateTime := 0;
    Result := False;
  end;
end;

Delfino 08-06-2008 22:04:20

Te puede servir la función TryStrToDate de Delphi..

ale_metall 10-06-2008 00:02:51

Parece interesante la funcion IsValidDate, pero no conosco mucho de funciones y no se como llamarla. Mi dato tipo fecha a corroborar esta en un maskedit.

saludos y disculpen las molestias.

egostar 10-06-2008 00:17:07

Cita:

Empezado por ale_metall (Mensaje 292400)
Parece interesante la funcion IsValidDate, pero no conosco mucho de funciones y no se como llamarla. Mi dato tipo fecha a corroborar esta en un maskedit.

saludos y disculpen las molestias.

Y no te sirve usar el TDateTimePicker en lugar de un TMaskEdit?

Digo, te evitarias muchos dolores de cabeza y sobre todo tiempo y esfuerzo.

Salud OS

Caro 10-06-2008 02:47:49

Hola ale_metall, la función IsValidDate te indica si un año, mes y dia corresponden a una fecha valida, si la fecha es valida te devuelve True, esta función la puedes utilizar de esta forma, pero talvez tengas que hacer mas controles.

Código Delphi [-]
var
 Anio, Mes, Dia : Word;
begin
 Dia := StrToInt(Copy(MaskEdit1.Text,1,2));
 Mes := StrToInt(Copy(MaskEdit1.Text,4,2));
 Anio := StrToInt(Copy(MaskEdit1.Text,7,2));
 if IsValidDate(Anio,Mes,Dia) then
  showmessage('La fecha es correcta')
 else
  showmessage('La fecha es incorrecta');
end;

para mi, sería mejor que utilices la función TryStrToDate y te evitas de hacer un monton de controles, lo utilizas de esta forma.

Código Delphi [-]
var
 Fecha : TDateTime;
begin
 if TryStrToDate(MaskEdit1.Text, Fecha) then
  showmessage('La fecha es correcta')
 else
  showmessage('La fecha es incorrecta')

o utilizas un TDateTimePicker como te dice el amigo Egopolice ;).

Saluditos


La franja horaria es GMT +2. Ahora son las 20:02:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi