Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar celda de DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=45346)

acalderonr 29-06-2007 18:08:11

Validar celda de DBGrid
 
Hola, tengo un problema para validar una celda de un DBGrid, el caso es el siguiente:

Tengo un DBGrid conectado a una tabla temporal DBF que cuando la salvo me la guarda en una base de Interbase. Pues bien, es una factura y cuando el cursor pasa por la columna de Precio quiero validar que no permita un precio en cero, si utilizo el evento GridColExit tengo lo siguiente:

{Valida que no pueda pasar con precio cero}
if Grid.SelectedField = DetalleEditPrecio then begin //primero valida que esté en la columna de precio
if DetalleEditPrecio.Value = 0 then begin
raise Exception.Create('Esta procesando una partida con precio Cero');
end;
end;

Sin embargo, siempre manda la excepción, quiero entender que cuando sale el cursor de la columna aún no se guardan los datos en la base temporal y siempre lo lee como cero, quisiera saber la forma de leer directamente el valor de la celda del grid y no del campo de base de datos, a través de Grid.Columns.Items o algo así, ojalá me haya dado a entender y alguien me pueda ayudar.

Gracias y saludos a todos.

jhonny 29-06-2007 18:14:43

Programa la validación en el evento OnValidate del Dataset que tengas conectado, por ejemplo:

- Mi DataSet se llama Tabla1 y quiero que no deje en cero en campo llamado valor, entonces usaría el evento OnValidate del campo "Valor" asi:
Código Delphi [-]
 
procedure TForm1.Tabla1ValorValidate(Sender: TField);
begin
  if Sender.AsFloat = 0 then
  begin
    raise Exception.Create('Esta procesando un valor en Cero');
  end;
end;

Espero te sirva ;).

acalderonr 29-06-2007 19:12:23

Listo Johnny, resuelto el problema, no había pensado en ese evento pero ya solucioné esa parte.

Te lo agradezco mucho.

Saludos.

jhonny 29-06-2007 19:30:05

Cita:

Empezado por acalderonr
Listo Johnny, resuelto el problema, no había pensado en ese evento pero ya solucioné esa parte.

Te lo agradezco mucho.

Saludos.

Que bien, estos finales felices son muy buenos :D


La franja horaria es GMT +2. Ahora son las 15:42:53.

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