Ver Mensaje Individual
  #14  
Antiguo 24-03-2010
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Reputación: 21
defcon1_es Va por buen camino
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 [-]
//Este lo puedes llamar desde el evento OnPostError de tus DataSets
procedure ErrorEnPost(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
  Action := daAbort;
  DataSet.Cancel;
  ErrorBaseDatos(E);
end;

// Este es el "genérico"
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;
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita