Hice pruebas con un proyecto nuevo.
Agregué un datamodulo y allí puse un adoconexion y un adoquery.
En el formulario principal agregué un boton y escribí el siguiente codigo para probar:
Código:
procedure TForm1.btnInsertarClick(Sender: TObject);
begin
b.MiQuery.Open;
b.MiQuery.Append;
b.MiQueryCODIGO_COMPANIA.Value := 'cab';
b.MiQueryCODIGO_SUPERVISOR.Value := '92001';
b.MiQueryCODIGO_DISTRITO.Value := '12a';
b.MiQueryFECHA.Value := StrToDate('10/10/2009');
b.MiQueryCODIGO_PRODUCTO.Value := 1;
b.MiQuerycantidad_esperada.Value := 5;
b.MiQueryESTATUS.Value := 'REGISTRADO';
try
B.MiQuery.Post;
except
on E:EOleException do
begin
showmessage('Mi mensaje de error');
END;
end;
end;
Este insert lo hice para que dispare una excepción violando un unique key pero no logro capturar la excepción EoleException. Cuando estoy depurando la aplicación delphi me muestra esta excepcion
Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message 'Violation of UNIQUE KEY constraint 'UNQ_presencia_tecnica_esperada'. Cannot insert duplicate key in object 'presencia_tecnica_esperada''. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
|
Despues que acepto esta ventana me muestra esta otra excepcion:
Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDatabaseError with message 'Violation of UNIQUE KEY constraint 'UNQ_presencia_tecnica_esperada'. Cannot insert duplicate key in object 'presencia_tecnica_esperada''. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
|
A Raiz de esto solamente puedo capturar la excepcion de tipo EDataBaseError y no puedo accesar al codigo de error de la clase EOleException.
Por qué este comportamiento?
Que estoy haciendo mal?
Saludos.-