{ =============================================================================== Copyright (©) 2002. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 03-11-2002 Versión actual: 1.0.0 Fecha versión actual: 03-11-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit Excepciones; interface uses sysutils, IB, db; procedure TratarExcepcion(E: Exception); overload; procedure TratarExcepcion(E: EIBError); overload; implementation uses Mensajes, IBErrorCodes; resourcestring fmtMsgIBGeneral = 'SQLCode: %d'+ #10#13 + 'IBNumber: %d' + #10#13 + '%s'; fmtMsgIBEspecifico = '%s' + #10#13 + #10#13 + 'SQLCode: %d'+ #10#13 + 'IBNumber: %d' + #10#13 + '%s'; msgErrorConexion = 'No se puede establecer conexión con el servidor.'; msgLoginIncorrecto = 'No se puede iniciar la sesión. Compruebe que su nombre de usuario y su contraseña son correctos y repita la operacion.'; msgBDSoloLectura = 'Esta base de datos es sólo de lectura. No se puede realizar ninguna modificación en los datos.'; msgFichBDSoloLectura = 'No se puede iniciar la sesión. El fichero de la base de datos tiene activado el atributo de sólo lectura.'; msgClavePrimaria = 'Ya existe otro registro con el mismo código.'; msgBDShutdown = 'La base de datos está en mantenimiento. Inténtelo más tarde.'; procedure TratarExcepcion(E: Exception); begin if E.Message <> 'Control '''' has no parent window' then VerMensaje(E.Message); end; procedure TratarExcepcion(E: EIBError); begin case E.IBErrorCode of isc_network_error : VerMensajeFmt(fmtMsgIBEspecifico, [msgErrorConexion, E.SQLCode, E.IBErrorCode, E.Message]); isc_login : VerMensajeFmt(fmtMsgIBEspecifico, [msgLoginIncorrecto, E.SQLCode, E.IBErrorCode, E.Message]); isc_read_only_database : VerMensajeFmt(fmtMsgIBEspecifico, [msgBDSoloLectura, E.SQLCode, E.IBErrorCode, E.Message]); isc_no_priv : VerMensajeFmt(fmtMsgIBEspecifico, [msgFichBDSoloLectura, E.SQLCode, E.IBErrorCode, E.Message]); isc_unique_key_violation : VerMensajeFmt(fmtMsgIBEspecifico, [msgClavePrimaria, E.SQLCode, E.IBErrorCode, E.Message]); isc_shutdown : VerMensajeFmt(fmtMsgIBEspecifico, [msgBDShutdown, E.SQLCode, E.IBErrorCode, E.Message]); else VerMensajeFmt(fmtMsgIBGeneral, [E.SQLCode, E.IBErrorCode, E.Message]); end; end; end.