Defines un procedimiento para el tratamiento de errores y lo usas donde consideres oportuno, ej: evento OnPostError de los DataSet, al abrirlos, etc.
Código Delphi
[-]
procedure ErrorEnPost(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
Action := daAbort;
DataSet.Cancel;
ErrorBaseDatos(E);
end;
procedure ErrorBaseDatos(E: EDatabaseError);
begin
if E is EIBInterBaseError
then begin
case EIBInterBaseError(E).IBErrorCode of
$14000019: AvisoError('Aviso', 'Coincidencia en el uso del registro.' +#13+
'Otro usuario lo tiene en uso.' +#13+
'Inténtelo de nuevo. -No es un error-'+#13+
'---------------------------------------'+#13+
'Error/Excepción FireBird: (' + E.Message + ')');
$14000159: AvisoError('Aviso', 'Clave primaria duplicada.' +#13+
'Ya existe un registro igual al selecionado (con el mismo ID).'+#13+
'Intente esta operación de nuevo. -No es un error-'+#13+
'---------------------------------------'+#13+
'Error/Excepción FireBird: (' + E.Message + ')');
$14000037: AvisoError('No hay acceso a la Base de Datos',
'La base de datos no existe o '+#13#10+
'el servidor de FireBird está desactivado.'+#13+
'---------------------------------------'+#13+
'Error/Excepción FireBird: ' + E.Message);
$140001A5: AvisoError('Se ha perdido la conexión con el servidor de FireBird',
'Se perdió la conexión con el servidor de FireBird.'+#13#10+
'Revise el equipo Servidor y compruebe que tiene'+#13#10+
'activo el servidor de FireBird. (Panel de Control/FireBird Server Manager)'+#13+
'---------------------------------------'+#13+
'Error/Excepción FireBird: ' + E.Message);
$14000018: AvisoError('Error al abrir la Base de Datos',
'El sistema no puede hallar la Base de Datos especificada.'+#13#10+
'Compruebe que la ruta es correcta, el fichero existe'+#13#10+
'y el usuario tiene permisos de acceso.'+#13+
'Se cerrará la aplicación.'+#13+
'---------------------------------------'+#13+
'Error/Excepción FireBird: ' + E.Message);
$14000191: AvisoError('No hay acceso al equipo servidor',
'No se ha podido establecer conexión ya que el equipo'+#13#10+
'de destino ha denegado activamente dicha conexión.'+#13#10+
'Compruebe el estado de su red y sus permisos dentro de la misma.'+#13+
'---------------------------------------'+#13+
'Error/Excepción FireBird: ' + E.Message);
else Aviso('Error/Excepción FireBird: '+IntToStr(EIBInterBaseError(E).IBErrorCode)+#13#10#13#10+E.Message);
end;
SysUtils.Abort;
end
else ErrorNoBaseDatos(Exception(E));
end;