Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Control de errores en bd (https://www.clubdelphi.com/foros/showthread.php?t=7321)

Isaac 11-02-2004 18:05:03

Control de errores en bd
 
Me gustaría saber las excepciones que hay en cuanto a bases de datos con el try. En particular me interesan las de cuando se intenta borrar un registro cuya clave es clave foránea (sin integridad referencial), o cuando lo intento con un registro que no existe. Sé que es:
try
adqquery.execsql
...
except
ahora irían las excepciones, que no me las sé
end;

Lepe 11-02-2004 19:20:55

errores BDE, IB ¿?

Isaac 11-02-2004 19:22:27

Errores en consultas SQL. Yo uso ACCESS y MYSQL

marto 11-02-2004 22:11:12

Haciendo un borrado de un registro se pueden producir multitud de errores, pero como te comenta Lepe, el sistema que uses para acceder a tu BD es fundamental. En cualquier caso, el sistema de control de errores de Delphi no es la chapuza de VB. Si se produce calquier excepición en tu código, esta cortará el flujo de ejecución hasta que encuentre un bloque try que la controle. En ese momento se ejecutará lo que tengas en el except del bloque. Por ejemplo

Código:

try
  algo_que_produce_error;
except
  ShowMessage('trata de arrancarlo Carlos!!!!');
end;

se mostrará el mensaje se produzca el error que sea. Si quieres capturar cualquier excepcion y saber información del error puedes hacer lo siguiente:

Código:

try
  algo_que_produce_error;
except
  on E: Exception do
    ShowMessage(E.Message);
end;

Esta técnica te permite capturar en E cualquier excepción del tipo Exception, es decir qualquiera. E apunta a la excepción, por lo tanto puedes acceder a sus propiedades.
Si quieres capturar sólo un tipo de excepción puedes hacer algo así:

Código:

try
  algo_que_produce_error;
except
  on E: EDBException do
    ShowMessage(E.Message);
  else
    raise;
end;

Este ejemplo captura las excepciones de tipo EDBException (que es una clase que hereda de Exception) y muestra su mensaje, si se produce otro tipo de excepción, la relanza.

Isaac 12-02-2004 11:15:25

Muchas gracias por responder

ronson 17-02-2004 19:19:34

NO ME VAN LAS EXCEp
 
Hola amigos yo he puesto lo siguiente:



MAinForm.DBGlobal.Params.Values['USERNAME'] := txtNombre.Text;
MAinForm.DBGlobal.Params.Values['PASSWORD'] := txtPassword.Text;
conexion.Visible:=false;

try
MAinForm.DBGlobal.Open;
except
ShowMessage('Error abriendo la base de datos: cerrando aplicación');
Application.Terminate;
end;


Y resulta que cuando el usuario o el password no son correctos el ODBC me da un error pero no me acepta la exception, es decir no me sale el mensaje ERROR ABRIENDO LA BASE DE DATOS.....

MI BASE DE DATOS ES FIREBIRD.


SALUDOS.


La franja horaria es GMT +2. Ahora son las 12:45:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi