Ver Mensaje Individual
  #6  
Antiguo 14-12-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Reputación: 18
FelipeDiaz Va por buen camino
Talking Eureka

Hola neftali y Lepe.

Antes que todo muchas gracias de seguro que ambas funcionan.
El problema es que no domino el tema bien pero con la orientacion de ustedes uno se acerca y parende, me demore en dar con la forma apropiada para el codigo.

A la alternativa de Neftali es facil hacerle seguimiento, y comprenderla...la E.ClassName es...... "EFIBInterBaseError"

y con la instruccion.. Showmessage(inttostr(E.SQLCode));,

pude saber cual es el codigo.

PERO..... para la violacion de la clave Primaria y para la violacion de la unicidad del Nombre del cliente, me genera el mismo error. "-803"

En cambio para la violacion del check de "CUPO<=0", si me da Error "'297".

El codigo al final queda de esta forma:

Código Delphi [-]
 
  except
     on E:EFIBInterBaseError do
         begin
            datamodule1.Database2.Rollback;
            if (E.SQLCode =-803) then
                 showmessage('Intenta crear un codigo de usuario que ya existe ')
            else
                 if (E.SQLCode =-297) then
                       showmessage('El cupo asignado debe ser un valor mayor que cero');
            end;
  end;


La alternativa de Lepe es mas avanzada, no la comprendí (ando a un nivel bajo aun) y no se que Unidad soporta el literal: strDebug.

Bueno en todo caso AUN SIGO SIN PODER IDENTIFICAR ENTRE LOS DOS PRIMEROS ERRORES... En el librode firebird dice:

Error -297 : Operation violates CHECK Constraint
Error -803 : Violation of PRIMARY or UNIQUE KEY Constraint

Pero ya comprendo que cuando se produce el mensaje de error el dice que clase es y la traduccion del Codigo como parece lineas arriba, ademas ese mensaje me dice en que constrain ocurre (es decir conociendo la REstriccion, se que campo afecta) pero no se como obtener la restriccion.

Para ampliar mas,
Cuando se produce el Error -803 ademas del mensaje "Operation violates ....." me aparece que ocurre en PK_Clientes, (ese es el nombre del constrain para la clave primaria).


Mi pregunta ahora es....... Como obtengo el nombre de la Constraint.?
__________________
El Calentamiento Global acabara con la tierra. No mas Barreras, No mas Guerras, No mas discrimiancion, No mas violencia, No mas indiferencia, No mas terrorismo, No mas secuestros. !Valoremos la vida!
Responder Con Cita