PDA

Ver la Versión Completa : Capturar exception


MAXIUM
07-02-2008, 00:32:42
Hola, tengo el problema de que nose donde capturar un determinado error EDatabaseError. Me dice que un campo en una tabla no debe quedar en blanco.

Esto se produce en un campo el cual no debe ser NULL, entonces aproposito hago un scroll para ver que error se produce. Lo que quiero es que se haga algo antes de producirse el error o que corriga el error en determinado momento.

Sino se entendio, me avisan. Uso Delphi, los componentes Interbase que bienen con este y Firebird última versión.

ContraVeneno
07-02-2008, 00:46:08
Si la actualización la estas haciendo por media de una consulta (TQuery), necesitas agregar ese campo dentro de la instrucción para que no te la ponga como nulo.

O si estas utilizando parámetros, en lugar de utilizar ".value", lo mejor sería utilizar el tipo de campo que estas manejando, ".AsString" por ejemplo.

Pero aquí la pregunta sería:
¿cómo estas actualizando la base de datso?

MAXIUM
07-02-2008, 00:53:38
coloco un DBEdit en el cual se ingresan los datos, al lado un DBGrid que me muetra todos los registros.

Entonces dejo el DBEdit en blanco y tras hacer un insert, en seguida hago click sobre cualquier otro registro que muestre la DBGrid, con esto se produce un scroll y buala!!! se produce el error. Lo hago a proposito para ver como evitar que al usuario final le ocurra.

Luis M.
07-02-2008, 10:47:36
Hola.

Suponiendo que utilices una Tabla o un Dataset.
En el evento BeforePost

if campo.isnull then
Begin
//Aquí tu mensaje de aviso
campo.focuscontrol;
Abort;
End;

Un saludo.

MAXIUM
07-02-2008, 16:47:58
ese Abort a que corresponde?

kalimero
07-02-2008, 17:58:32
Hola
Si has definido el campo como "not null" en la base de datos
entonces será el servidor el que genere el error.Tu lo único que debes
hacer es recoger ese error en el evento "onPostError" del Dataset y obrar en consecuencia.

saludos

MAXIUM
07-02-2008, 18:26:35
Gracias a sus comentarios, encontre la solución. Aquí les dejo el código por siacaso ;)

procedure BeforePost;
begin
If IBDataSet.campo.IsNull then IBDataSet.Delete;
IBDataSet.Edit;
end;

rastafarey
07-02-2008, 19:10:15
PRUEBA ESTO http://www.clubdelphi.com/foros/showthread.php?t=51052