Ver Mensaje Individual
  #4  
Antiguo 30-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola José.

No sé como estas capturando las excepciones te pongo un ejemplo muy, pero muy simplificado para que pruebes:
Código Delphi [-]
...
type
  TfrmMain = class(TForm)
  ...
  procedure FormCreate(Sender: TObject);
  ...
  private
    ...
  public
    ...
  end;

  TwPaciente = class(TObject)
  public
    procedure ShowException(Sender: TObject; E: Exception);
  end;

var
  frmMain: TfrmMain;
  wPaciente : TwPaciente;

implementation

procedure TwPaciente.ShowException(Sender: TObject; E: Exception);
var
  Msg: string;
begin
  case EIBInterbaseError(E).IBErrorCode of
    335544347: Msg := 'El campo NOMBRE no puede estar vacio';
    //...
  end;
  MessageDlgPos(Msg,mtError,[mbOk], 0, 100, 200);
  frmMain.IBTransaction1.RollbackRetaining;
  //...
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Application.OnException := wPaciente.ShowException;
end;
...
De este modo tiene que funcionarte sin presentar la segunda pantalla. Pero debo decirte que en la práctica, queda por tu cuenta manejar cada una de las excepciones que pudiera presentar cualquier tabla de tu bd.

Fijate que estoy utilizando IBX por lo que deberás cambiar:
Código Delphi [-]
EIBInterbaseError(E).IBErrorCode
por:
Código Delphi [-]
EFIBError(E).IBErrorCode

Saludos

Edito: Si te decidis por este modo de manejo, te aconsejo crearte una unidad para encapsular todo el código relativo al manejo de las excepciones.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-08-2013 a las 19:24:53.
Responder Con Cita