PDA

Ver la Versión Completa : Validar celda de DBGrid


acalderonr
29-06-2007, 18:08:11
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:

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