Ver Mensaje Individual
  #1  
Antiguo 07-02-2011
Tcmn Tcmn is offline
Miembro
 
Registrado: sep 2004
Posts: 152
Reputación: 20
Tcmn Va por buen camino
IBDataset no guarda registros insertados y editados antes de commit

Hola tengo estoy haciendo un sistema con Delphi 6, Firebird 2.1, Componentes IBX en Windows XP Profesional.

Las tablas no hacen commit/commitretaining ni rollback/rollbackretaining en sus eventos sino que lo manejo con BitBtns para confirmar todos los cambios hechos a las tablas.

Me encontrado con algo curioso. Al insertar registros en la aplicacion cliente y despues modificar esos mismos registros previamente insertados sin hacer commit no me guarde el ultimo valor que puse en cierto campo sino el que puse al momento de insertar. Un ejemplo es el sig:

Inserto un registro:
Código:
 
Tabla.Insert;
tablaCAmpo1.Value:='ValorAl insertar Campo1';
tablaCAmpo2.Value:='ValorAl insertar Campo2';
tablaCAmpo3.Value:='ValorAl insertar Campo3';
Tabla.Post;
Ese mismo registro lo modifico despues:
Código:
 
Tabla.Edit;
tablaCAmpo2.Value:='Valor nuevo al Editar Campo2';{Modifico lo que hay en un campo}
Tabla.Post;
Despues hacemos commit:

Código:
Transaccion.Commit;
La logica dice que el Campo2 contiene la cadena "Valor nuevo al Editar Campo2" al registrarse los datos en la base de datos pero resulta que no. Lo que se guarda en la base de datos es lo que haya registrado en los campos al momento de dar de alta el registro, es decir, la cadena: "ValorAl insertar Campo2".

Espero me haya explicado. Esto ocurre con cualquier tabla(IBDataset) que tenga en mi aplicacion.

Nota: Cuando un registro se inserta, hago commit y despues modifico el mismo registro ahora si me registra los cambios que haga a ese registro.

Gracias de antemano por la ayuda que me puedan brindar.
__________________
Salu2
Responder Con Cita