Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Forzar captura datos en un DBEdit (https://www.clubdelphi.com/foros/showthread.php?t=35730)

Goyo 19-09-2006 17:31:55

Forzar captura datos en un DBEdit
 
tengo un formulario con varios dbgrid, pero lo que deseo hacer es que antes de que se salga del Dbedit me mande un mensaje que ese DBEdit no puede estar vacio, bueno les explico...

para que pueda yo grabar necesito dos campos (FechadeServicio e Importe) cada uno lo tengo en un DBedit... FechadeServicio esta asociado al DBFecha e Importe al DBImporte, en el campo FechaImporte desde sus propiedades EditMask le asigne un formato: EditMask =!99/99/0000;1;_ ,

roman 19-09-2006 18:34:29

Para validar un campo podrías usar el evento OnExit del DBEdit, o bien el OnValidate del TField asociado. La segunda forma, en mi opinión, es más correcta porque te permite validar el campo independientemente de la interfaz que uses para introducir los datos.

// Saludos

Goyo 19-09-2006 20:41:49

lo hice tal como me indicaste, solo que me marca un error

Código Delphi [-]
procedure TDM.TbBitacoraFechadeServicioValidate(Sender: TField);
begin
  if DM.TbBitacoraFechadeServicio=' ' then
     messageDlg ('Es necesario introducir la Fecha');
end;

me manda el siguiente error:
[Error] ModuloDatos.pas[65]: Inconpatible Types: 'String' and 'TDataFile'
[Error] ModuloDatos.pas[66]: Undeclared identifier: 'MessageDlg'

roman 19-09-2006 20:49:13

¿TDataFile? Más bien ha de ser TDateField.

Prueba haciendo la comparación así:

Código Delphi [-]
if DM.TbBitacoraFechadeServicio.IsNull then
  messageDlg ('Es necesario introducir la Fecha');

El segundo error es porque no has inlcuido la unidad Dialogs. Por otra parte, lo que conviene hacer aquí- según puedes ver en la ayuda de Delphi -es lanzar una excepción y no sólo mostrar un mensaje:

Código Delphi [-]
if DM.TbBitacoraFechadeServicio.IsNull then
  Exception.Create('Es necesario introducir la Fecha');

// Saludos

Goyo 20-09-2006 17:07:58

ya lo escribi tal como me indicaste.... quedando de la siguiente manera:
Código Delphi [-]
procedure TDM.TbBitacoraFechadeServicioValidate(Sender: TField);
begin
if DM.TbBitacoraFechadeServicio.IsNull then
  messageDlg('Es necesario introducir la Fecha', mtError, [mbOk],0);
end;

Cuando capturo no capturo o no pongo nada en este campo (FechadeServicio) del DBFecha, no me manda ningun error, ni mucho menos me manda algun mensaje, solo se pasa al siguiente campo... como puedo solucionarlo, estoy escribiendo algo mal...


La franja horaria es GMT +2. Ahora son las 23:41:51.

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