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)
-   -   onValidate de un campo (Excepciones) (https://www.clubdelphi.com/foros/showthread.php?t=32463)

Caro 06-06-2006 20:48:17

onValidate de un campo (Excepciones)
 
Hola a todos

Quisiera poder validar dos campos de mi debgrid uno es el precio de tipo float y el otro es la fecha de tipo date, he leido hilos referente a esto y he hecho muchas pruebas pero aun no me funciona, estoy desesperada les agradeceria un monton a todos los que pudieran ayudarme.

Hice las siguientes pruebas

Código Delphi [-]
type
  EFecha = class(Exception)
....
 
procedure TCompras.qryfechaValidate(Sender: TField);
var
  fch: TDateTime;
begin
  if  not TryStrToDate(Sender.AsString,fch) then
  begin
    raise EFecha.Create('Fecha Incorrecta');
  end
end;

tambien he probado estos otros dentro del evento onValidate del campo fecha

Código Delphi [-]
   try
      StrToDate(Sender.AsString);
   except
      on exception do ShowMessage('Fecha Incorrecta');
   end;

Código Delphi [-]
   try
      StrToDate(Sender.AsString);
   except
      on EConvertError do ShowMessage('Fecha Incorrecta');
      else
          ShowMessage('Fecha Incorrecta'); 
   end;

en todos estos casos si borro todo lo que hay en la celda del dbgrid donde esta la fecha y salgo a otra celda se lanza mi excepción y me saca el mensaje de 'fecha incorrecta' pero si escribo digamos 54 que no llegaria a ser una fecha me saca este mensaje

'54' is not a valid date and time

y yo quiero que me saque el mensaje que he puesto pero nose porque no lo saca he probado de las formas que puse arriba y nada de nada que funciona en este caso, que estoy haciendo mal me pueden orientar por favor.

Y en el caso del precio con lo siguiente

Código Delphi [-]
   try
      StrToCurr(Sender.AsString);
   except
      on exception do ShowMessage('Precio Incorrecto');
   end;

si escribimos 45,,57 el error serian las dos comas y tampoco veo el mensaje que yo pongo sino lo siguiente.

45,,57 is not a valid floating point value for field 'precio'

como le hago para que salgan mis mensajes en estos casos.

Delphi7, Access

Saludos y que tengan un bonito dia

celades1 06-06-2006 22:11:58

Hola

Yo para lo que tu quieres yo utilizo el evento onsettetx ya que hace la comprobacion justo antes de captar el valor el field

Código Delphi [-]
procedure TFDades_Assentament.AssentamentDATASetText(Sender: TField;const Text: String);
begin
  if trim(text)<>'' then 
  try 
   sender.AsDateTime:= strtodate(text);
  except
   ShowMessage('Formato de Fecha Incorrecta'); 
  end;
end;


Saludos

Caro 06-06-2006 22:33:22

Miles y miles de gracias celades1, es justo lo que necesitaba

Saludos


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

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