Lo logre de esta forma, no se que tan buena sea....
Aprovechando que E.IBMessage, si me da el mensaje especifico incluyendo el nombre d ela Constraint, mientras que E.SQLMessage, me da uno generico sin detalles. y ademas utilizando la funcion POS.
Código Delphi
[-]
try
Datamodule1.CLIENTES.Post;
CodBusCli:= Datamodule1.CLIENTESIDCLI.Value;
Datamodule1.Database2.Commit;
except
on E:EFIBInterBaseError do
begin
datamodule1.Database2.Rollback;
if (E.SQLCode =-803) then
if Pos('PK_CLIENTES', E.IBMessage) <> 0 then
showmessage('Intenta crear un codigo de Cliente que ya existe ')
else
if Pos('UNQ1_CLIENTES', E.IBMessage) <> 0 then
showmessage('El Nombre de cliente que ya existe ')
else
if (E.SQLCode =-297) then
showmessage('El cupo asignado debe ser un valor mayor que cero');
end;
end;
-------------------------------------------------------------
Bueno, hasta aqui va solo resuelta la primera parte ......falta la segunda parte del mensaje original ?
(a proposito, como hago para colocar aqui un cuadro con flecha azul ">", para crear un vinculo al mensaje)?