Ver Mensaje Individual
  #1  
Antiguo 11-08-2006
Avatar de Capo
Capo Capo is offline
Miembro
 
Registrado: jul 2004
Posts: 64
Reputación: 20
Capo Va por buen camino
Manejo de Excepciones Intraweb

Buenas noches. Saludos desde Colombia.
De antemano gracias por la ayuda que puedan brindarme :
Intraweb 7.2.41 + Delphi 7 + [ADO] MSSQL.

Respetados amigos, en mi aplicacion de escritorio con delphi uso una "rutina" para cachear errores de base de datos [ADO], esa misma "rutina" la he adaptado a mi nueva WebApplication con Intraweb, pero tengo un error que no entiendo como poderlo corregir [[Error] UserSessionUnit.pas(133): Incompatible types: 'Parameter lists differ'], o talvez estoy errado en la forma de cachear los errores de mi base de datos.

En mi IWUsersession tengo una funcion llamada: MostrarMensaje y arribita declaro las constantes de errores ADO:

Código Delphi [-]
var
  IWUserSession: TIWUserSession;
const
  {Declare constants we're interested in}
  eKeyViol = -2147217873;
  eCRFalta = -2147467259;
  eConvert = 1240520;
  eForeignKey = 9733;
  eDetailsExist = 9734;
  eReglaMask = 1242448;
  eIntegridad = -2147217900;
implementation
uses ServerController;
{$R *.dfm}

Function MostrarMensaje(AException : Exception): Boolean;
Var iADOError: Integer;
begin
iADOError := 0;
if (AException is EDataBaseError) then
  iADOError := IWUserSession.ADOConn.Errors.Item[0].Number;
  case iADOError of
    eCRFalta:
    begin
      WebApplication.ShowMessage('Campo Requerido en la Base de Datos', smAlert);
    end;
    eKeyViol:
    begin
      WebApplication.ShowMessage('Violacion de restriccion en la Base de datos, Favor Verifica Datos', smAlert);
    end;
    eConvert:
    begin
      WebApplication.ShowMessage('Error de conversion de datos, Favor Verificar Datos', smAlert);
    end;
    eReglaMask:
    begin
      WebApplication.ShowMessage('Error Ingreso de datos, Favor Verificar Datos', smAlert);
    end;
    eIntegridad:
    begin
      WebApplication.ShowMessage('Error Integridad de Base de Datos, Favor Verificar Datos',smAlert);
    end;
  else
    WebApplication.ShowMessage(Pchar('Error de Base de datos.           '+#13+'#Error: '+IntToStr(iADOError)+#13+'Clase:'+AException.ClassName), smAlert);
  end;
end;

Luego tengo un procedure llamado Excepciones, el cual llama la funcion MostrarMensaje y manda la excepcion.

Código Delphi [-]
Procedure TIWUserSession.Excepciones(AApplication: TIWApplication; AException: Exception);
Begin
  If Not MostrarMensaje(AException) Then
    WebApplication.ShowMessage('Error de Base datos', smAlert);
End;

Al final en el evento Create de mi IWUserSession, escribo lo siguiente para la cacheada de los errores:

Código Delphi [-]
IWServerController.OnException := Excepciones;

Pero el error al intentar ejecutarlo es: [[Error] UserSessionUnit.pas(133): Incompatible types: 'Parameter lists differ'].

Como cito arriba en mi Applicacion de escritorio funciona bien, aunque el unico cambio que realice para adaptarlo a Intraweb fue en los parametros de la propiedad OnException.

Para Intraweb
Código Delphi [-]
 Procedure Excepciones(AApplication: TIWApplication; AException: Exception);

y asi se debe crear para Escritorio
Código Delphi [-]
Procedure Excepciones(Sender: TObject; E: Exception);

Agradezco cualquier norte ke me puedan brindar. saludos. Dabeto
Responder Con Cita