Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   problema al validar fecha (https://www.clubdelphi.com/foros/showthread.php?t=55108)

sargento elias 08-04-2008 17:07:22

problema al validar fecha
 
buenass!

Tengo un problema con el rxdatedit, He creado una funcion para validar la fecha

Código SQL [-]
 
function funFecha(fecha : string) : boolean;
begin
  if fecha <> '  /  /    ' then begin
    try
      StrToDate(fecha);
      Result := True;
    except
      on exception do
        Result := False;
    end;
  end;
end;

Pero cuando voy a realizar el if funfecha(dateedit.text) = false then, no me entra en la función y me saca un error del tipo:

Econverterror with message '50/50/50' is not a valid date.

Si alguien puede ayudarme para pasarlo adate please?

enecumene 08-04-2008 17:26:53

Hola, a ver, intenta con esto:

Código Delphi [-]
var
  Fecha: TDateTime;
begin
  if not TryStrToDate(RxDateEdit.Text, Fecha) then
  begin
    ShowMessage('Algo va mal');
  end;
end;
Saludos.

Neftali [Germán.Estévez] 08-04-2008 18:04:24

Creo que es, porque el propio control te está realizando las validaciones antes de que de tiempo a que llegue a tu procedimiento.
Si tiene propiedades para desactivar esa validación, desactívala, sino deberás utilizar otro componente o revisar si este te da algun acceso (evento) para poder "meter mano" en caso de error.

sargento elias 08-04-2008 18:24:17

probado
 
me dice que algo va mal cuando meto una fecha incorrecta.50/50/50.:(

enecumene 08-04-2008 18:37:22

Cita:

Empezado por sargento elias (Mensaje 278322)
me dice que algo va mal cuando meto una fecha incorrecta.50/50/50.:(

A que te refieres? te funcionó o no te funcionó? :confused::confused:

Saludos.

ContraVeneno 08-04-2008 20:03:52

¿es broma no?

¿leíste el código? se supone que eso tiene que hacer...

vtdeleon 08-04-2008 21:44:17

Neftalí ha dado la respuesta. No importa que código se ponga en sus métodos. A menos que te las arregles (heredando, sobreescribiendo...).

Chequea si ese componente tiene alguno evento "OnValidate" o algo parecido.

Saludos.

ContraVeneno 08-04-2008 23:03:22

tan sencillo que sería utilizar un DateTimePicker y olvidarse de todas esas validaciones....

sargento elias 09-04-2008 10:14:14

onacceptdate
 
hay una evento onacceptdate, no si si será, como lo podría montar?

Perdonad, no era broma, me sacaba el msgbox('Algo va mal');

ContraVeneno 09-04-2008 16:15:56

Vamos a ver... El TDateEdit de las RX, sirve para validar que una fecha sea correcta. Es decir, este control ya viene con todo un procedimiento para validar la fecha que se ingresa. Entonces, ¿para qué quieres validar la fecha tu mismo cuando el control ya lo hace por ti?

Ya lo dijo Neftalí pero parece que no lo notaste:
Cita:

Creo que es, porque el propio control te está realizando las validaciones antes de que de tiempo a que llegue a tu procedimiento.
Ahora, Las RX han sido reemplazadas por las Jedi (las puedes descargar gratis), tal vez sería mejor que utilizaras la última versión de las Jedi en lugar de seguir utilizando las RX.

En fin, revisando la ayuda de este componente, el evento onAcceptDate se ejecutó justo después de que el usuario a seleccionado una fecha. Principalmente sirve para prevenir que el usuario haya seleccionado una fecha no válida para tus procedimientos. Solo habría que poner "Action := False" para que el control actúe como si le hubieran dado en el botón "cancelar".

Pero todo eso no tiene la menor importancia hasta que no nos expliques para qué quieres validar la fecha tu mismo cuando el control ya lo hace por ti.

sargento elias 09-04-2008 18:18:36

YA se que valida el solo , pero me saca una excepción y me salta del programa, y no se como controlarla ni de donde.

Gracias.

ContraVeneno 09-04-2008 20:10:02

Entonces lo que supongo necesitas no es evitar esa excepción, mas bien lo que quieres es que ese mensaje salga en español.

Todo esto ya lo había mencionado Neftali en su mensaje....

Lo que requieres es manejar el evento OnInvalidDate y si no quieres que te aparezca el mensaje predeterminado del control y mostrar el tuyo propio, tienes que poner el parámetro "Accept" de ese evento en Verdadero. Si "Accept" lo dejas en falso te va a saltar el mensaje del control.


La franja horaria es GMT +2. Ahora son las 07:12:01.

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