Ver Mensaje Individual
  #8  
Antiguo 06-10-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
El disparador no valida si el campo ya viene con valor. Una buena práctica es añadir un If al código del disparador para no darle valor al campo si éste ya trae uno.

Tcmn no ha dicho qué componentes de acceso está utilizando, pero según lo que comenta sobre las altas y los cancels, estoy casi seguro que:

1. Usa un evento OnNewRecord / AfterInsert de esos componentes para llamar al generador.

o bien:

2. Está utilizando IBX con la propiedad GeneratorField.ApplyEvent = gamOnNewRecord (lo cual no es mala idea).

Si fuera lo anterior, para resolver el problema creo que bastaría con añadir el clásico "IF (NEW.ID IS NULL) THEN" a los disparadores. A menos que a Tcmn le interese que esas claves sean consecutivas (algo que no debería ser requisito en una llave primaria ).

Saludos.

Al González.

P.D. Acabo de ver su nuevo comentario donde nos indica que sí está utilizando IBX. Tcmn, ¿cómo estás utilizando la propiedad GeneratorField del componente de datos?

Última edición por Al González fecha: 06-10-2010 a las 20:00:58.
Responder Con Cita