Ver Mensaje Individual
  #2  
Antiguo 18-09-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Veo que uno de los datos que agregas es el ID.
Puede que agregues ID=0 y luego los triggers se encarguen de darle el siguiente número al campo.
En ese caso el Dataset habrá dado la instrucción a FB de que guarde el registro y ha guardado una copia en memoria, para no tener que releerlo.
Mientras no cierres esa tabla/trasnaccion/conexión, el Dataset no se enterará de que en la base de datos se han modificado los datos insertados.

Tienes dos opciones si ese es el problema:
1. Generas el ID antes de insertar y lo asignas al campo.
2. Insertas ID=0 y luego refrescas los datos. No recuerdo la instrucción, pero se que existe.

Si es un generador, puedes tener un SQL que ejecute algo como lo siguiente:

Código SQL [-]
SELECT gen_id(NOMBRE_GENERADOR) from RDB$DATABASE
RDB$DATABASE tiene siempre un solo registro.
Con esto y un trigger que haga más o menos esto:
Código SQL [-]
TRIGGER BEFORE INSERT
begin
  if (new.ID is null) or (new.ID =0) then
     new.ID = gen_id(NOMBRE_GENERADOR);
  ... 
end
Responder Con Cita