FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Comunicación entre transacciones (Firebird 1 + Ibo)
Estoy creando una aplicación MDI y tengo un solo data module en donde está la conexión y poco más. Despues, en cada formulario, tengo los Querys y Sources de cada uno.
Mi problema es que en un formulario (Facturas) donde tengo que introducir un codigo (Cliente) que no existe abro la tabla de mantenimiento de clientes y lo doy de alta. Esta operación. al realizarse en otro formulario, está asociada a la transacción de ese formulario. El problema me surje cuando al volver al formulario de facturas no me reconoce el código del cliente que acabo de crear. Creo que se debe a que la transacción de facturas se abre antes que la de clientes, y a pesar de que al volver al formulario de facturas la transacción de clientes ya está cerrada no puede ver los cambios producidos en ésta. Por supuesto si me salgo del formulario de facturas y vuelvo a entrar ya aparece el nuevo código al reabrirse la transacción de facturas. Alguien puede darme alguna sugerencia? |
#2
|
||||
|
||||
Hola,
Cita:
1. La transacción que controla las facturas tiene que tener la opción read_commited activada. Es decir, se le permite tener acceso a los cambios (confirmados) que estén haciendo otras transacciones concurrentes. 2. Los cambios que se hagan desde la transacción que controla los clientes deben ser confirmados (commit) antes de que puedan ser vistos desde otras transacciones. 3. La consulta de los clientes (asociada a la transacción que controla las facturas) tendrá que ser "relanzada". Dependiendo del método de acceso (componentes que estés utilizando) bastará con una llamada al método Refresh del Dataset o, por contra, será necesario un cierre y reapertura del mismo. Saludos. |
#3
|
||||
|
||||
Hola. Por lo que comentas creo que tu problema radica en el nivel de aislamiento de las transacciones. Dales el nivel de forma que cada transaccion pueda ver los cambios realizados por otras transacciones. Todo este tema está muy bien documentado en un articulo del moderador de este foro Kinobi.
saludos |
#4
|
||||
|
||||
Creo que Kinobi escribe más rápido que yo.
Saludos. |
#5
|
||||
|
||||
Gracias a los dos.
Para aclarar para posibles consultas futuras, en los compenentes IBO se selecciona en la opcion Isolatión: ticommited - ti concurrency y ticonsitency, |
|
|
|