PDA

Ver la Versión Completa : Forzar captura datos en un DBEdit


Goyo
19-09-2006, 17:31:55
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


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í:


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:


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:
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...