Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Capturar exception (https://www.clubdelphi.com/foros/showthread.php?t=52988)

MAXIUM 07-02-2008 00:32:42

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

Código Delphi [-]
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 ;)

Código Delphi [-]
procedure BeforePost;
begin
     If IBDataSet.campo.IsNull then IBDataSet.Delete;
     IBDataSet.Edit;
end;

rastafarey 07-02-2008 19:10:15

Resp
 
PRUEBA ESTO http://www.clubdelphi.com/foros/showthread.php?t=51052


La franja horaria es GMT +2. Ahora son las 18:19:25.

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