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
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