Cita:
|
Empezado por kinobi
Hola,
La gestión de transacciones es responsabilidad exclusiva del servidor Firebird. Otro asunto es que tú, desde tu aplicación cliente, ordenes al servidor que confirme (commit) o rechace (rollback) los cambios que has realizado en la transacción actual. ¿Cómo hacer esto? depende del método de acceso, y si este permite gestión ímplicita (tú te despreocupas de abrir y cerrar las transacciones) o, por contra, exige que explícitamente controles estas operaciones.
En el caso de IBX, admite ambas formas de trabajo. Aunque estoy muy "oxidado" con el uso de IBX, te recomendaría el control explícito (que tú abras y cierres las transacciones). Para ello tienes métodos (StartTransaction, Commit, CommitRetaining, Rollback, RollbackRetaining) en la clase TIBTransaction (te remito a la documentación).
Por cierto, el asunto del refresco de datos en otras transacciones (o clientes) concurrentes, suele estar relacionado con el nivel de aislamiento que tiene la transacción. Para poder ver cambios realizados en otras transacciones, el nivel de aislamiento debe ser read_commited
Saludos.
P.S. En estos foros ya se ha tratado varias veces este tema. El uso de las opciones de búsqueda te dará más de un hilo que trata el asunto.
|
Muchas Gracias Sr. Kinobi por sus comentarios los tomare muy en cuenta, pues encontre una Solución no de mi agrado, lo que pasa es que cuando inicia mi aplicación, Se Conecta a la Base de Datos y despues Inicia la Transacción, pues bien, cuando yo llamo al Procedimiento Almacenado después Finalizo la Transacción y vuelvo a Abrir la Base de Datos y me Refresca las Inserciones del Proc. Almacenado, ahora, lo que me comenta sobre el Nivel de aislamiento, pues lo tengo como ReadCommited, en toda mi aplicación no me había pasado esto hasta que ahora me decido insertar registros por medio de un Proc. Almacenado, lo estaba haciendo por medio de las Propiedades que tiene un ibdataset InsertSQL, UpdateSQL, pero en fin, seguire haciendo pruebas. Que tenga buen día Sr. Kinobi.