Ver Mensaje Individual
  #18  
Antiguo 11-12-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Reputación: 22
Giniromero Va por buen camino
Hola,

por lo que me cuentas no los has definido bien.

Bien por que te falta código en los eventos, esto es:

eventos AfterCancel
procedure TFrmDModule.AfterCancel(DataSet: TDataSet);
begin
IBTransaccion.RollbackRetaining;//o Sin el Retaining
end;
y para los eventos AfterPost
procedure TFrmDModule.AfterPost(DataSet: TDataSet);
begin
IBTransFX.CommitRetaining;
end;

No sé si saber que cada vez que modificas un registro, o lo intentas, en IB se queda abierta la transacción, y hasta que no actualizas esa transacción, los datos no se guardan realmente.

Otra posibilidad es que no tengas bien definida la transaccion, el como quieres que esta funcione.

Para ello tienes que ir a la transacción que tienes vinculada a tu base de datos, con el botón izquierdo del ratón haces doble click y te saldrá una ventana, "Transaction Editor". Prueba con "Read Committed", que te generará el siguiente código:
read_committed
rec_version
nowait

Esto, actualiza la aplicación a cada cambio para que se actualice la información en cualquier terminal que este usndo esa misma base de datos.

La última posibilidad que se me ocurre pueda estar dandote problemas, es que no hayas generado bien el código para UpdateSQL, deleteSQL etc... eso lo puedes solucionar con el botón derecho del ratón sobre tu IBDataSet, en "dataset editor"

En key field tienes que poner el campo que es primary key en nuetra tabla, si lo tienes ya definido en la propia base de datos, pulsando "Select Primary key" se selecciona solo.

En Update Fields, tienen que estar los campos que vas a querer que se actualicen.

Si son consultas sobre una unica tabla, probablemente quieras que sean todos los campos, pero si tienes una consulta en la que aparecen varias tablas distintas, entonces te puede dar problemas si seleccionas campos calculados, o campos que no sean de la tabla principal de tu consulta.

Cuando hayas definido todo esto, no te olvidas de pulsar "Generate SQL" para que te genere automaticamente el código para el delete, Update y ModifySQL.

Espero que te haya sido de ayuda,

Saludos

Virginia

Para que estas transacciones se acualicen es para lo que sirven los procedimientos que te comento insertes en tus tablas.

Cuando usas RollBack, cancelas lo que hayas hecho en esa transacción, cerando las tablas. Cuando RollBackRetaining también te cancela lo que hayas hecho en esa transacción pero sin cerrarte las tablas.

El commit te guarda los cambios cerrando tablas, el CommitRetaining sin cerrarte tablas.

(Si tienes dudas sobre esto, te aconsejo busque en la documentacion que tengas de interbase, y en internet.)
__________________
Sonrie al mundo, y el mundo te sonreirá :)

Última edición por Giniromero fecha: 15-12-2003 a las 09:28:40.
Responder Con Cita