Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Controlar insercion de fecha y hora en una tabla paradox (https://www.clubdelphi.com/foros/showthread.php?t=2217)

Muten 14-07-2003 19:12:57

Controlar insercion de fecha y hora en una tabla paradox
 
Hola a todos, este es mi primer mensaje en este foro.. así q sed buenos conmigo ;)
Tengo creada una tabla en Paradox con varias columnas, entre ellas una de tipo fecha (Date) y otra de tipo hora (Time), me gustaría saber cuál es la forma más común de controlar la entrada de estos tipos de datos desde un formulario en delphi. Supongo q lo más común es tener dos TDBText con una máscara, una para tipo fecha y la otra para tipo tiempo. Pero la cosa no me va...
Alguna sugerencia??

marcoszorrilla 14-07-2003 19:27:30

En el Ttable con el que te conectes haces doble clic sobre el campo en cuestión despues de haber añadido todos los campos, y ahí le das el formato, luego lo heredarán todos los DbEdit que tengas e incluso las rejillas.

Un Saludo.

Muten 14-07-2003 23:13:20

Gracias por tu respuesta marcos, mejora lo de la mascara en el tdbText, pero no me soluciona el problema, intentaré ser más claro:
Supongamos q tomamos una de las máscaras para la hora que nos proporciona delphi, esto es: '!90:00;1;_'
En una BD paradox, está permitido meter un 8 únicamente para indicar que son las 08:00:00, si metemos un 8 con esta máscara se produce un error. He mirado muchas formas para cambiar la máscara y q se puedan meter lo distintos formatos q admite la BD (p.ej 8:2 se convierte en 08:02:00), pero no me sale :confused:
De todas formas no sé cómo evitar q se muestre esa pantalla tan fea cuando metemos los datos de la hora, p.ej y nos salimos del dbeText ("Invalid input type...."). El evento OnValidate de la TTable se ejecuta cuando se han introducido correctamente los datos, y no veo ningún otro evento interesante por ahí.

Saludos a todo el foro!

marcoszorrilla 15-07-2003 16:32:48

Prueba con este ejemplo, un poco forzado pero funciona:

Bájate un TApplicationEvents lo tienes en la paleta adicional y para interceptar este error de conversión, que no la lanza el BDE, sino Delphi pones este código, solamente pongo el ejemplo con fechas, pero con tiempos funcionará igual interceptando el mensaje correspondiente.

Código:

procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
begin
  if (lowercase(copy(E.Message,(Length(E.Message) - 18),19 )))='is not a valid date' then
  Application.MessageBox('La fecha introducida no es correcta','Atención',mb_Ok +
  mb_IconQuestion);
end;

Un Saludo.

Muten 16-07-2003 12:10:06

Gracias otra vez marcos, basándome en tu idea, me he puesto con la ayuda de delphi y lo he hecho de ésta forma, a ver q te parece:

Código:

procedure TfrmRegistro.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
begin

        if (E is EDBEditError) then
        begin
          if (dbeFecha.Focused) then
          begin
                MessageDlg('¡Fecha incorrecta! ' +#13+dbeFecha.text +#13 +
                'No tiene formato de fecha.',mtWarning,[mbOK],0);
                  dbeFecha.Text :='';
          end

Un saludo!

marcoszorrilla 16-07-2003 20:30:03

Lo veo correcto, lo único es que solamente te sirve para ese control en concreto y con la solución que yo te dí, que habría que mejorar pero no voy bien de tiempo, serviría para cualquier mensaje de error de "fecha incorrecta" 'is not a valid date'

Un Saludo.

Muten 16-07-2003 20:37:43

Pues tienes razón, de la forma que indicas nos cubrimos las espaldas para cualquier tipo de error relacionado con la fecha.. D todas formas el uso d excepciones no me terminan de convencer a la hora de controlar la fecha y la hora, pero vamos, no pienso seguir comiendome mas el coco con el tema.
Una vez mas, gracias.

pgraciap 13-08-2003 17:42:53

Hola, Muten.

Mira yo no entiendo cual es la finalidad de controlar la insercion de los datos Fecha y Hora, pero hay varias formas de introducir estos datos.

Yo controlo hago que el sistema controle estos datos con lo siguiente:
FrmDatos.Acceso.FieldByName(Fecha).AsDatetime:= Date;
FrmDatos.Acceso.FieldByName(Hora).AsDatetime:= Time;
y asi me evito errores, pero si lo que quieres es introducir estos datos de la forma que el usuario los introduzca creo que primero tendras que ver el formato de la hora y la fecha, es por ello que te marca errores.....

creo que la hora no es: 08:02:50 creo que es: 08:02:00 p.m. o algo asi busca primero como se convierte el dato y veras tu solucion al igual que la fecha........ :D

Espero te sirva de algo......


La franja horaria es GMT +2. Ahora son las 15:28:33.

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