Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Urgente Server IB no refresca... (https://www.clubdelphi.com/foros/showthread.php?t=8806)

El_Raso 02-04-2004 01:41:02

Urgente Server IB no refresca...
 
Tengo IB 6.5 como server en una red de W98 y W2000, sucede que cuando en una PC entro records, estos no se me refrescan en ninguna otra hasta que la gente (la que esta metiendo datos) no sale del sistema.

Puse la B.D con enabled force write(modo asyncrono) y como quiera no se refresca la data en las otras pc..

Una mano por favor...

kinobi 02-04-2004 01:47:00

Cita:

Empezado por El_Raso
cuando en una PC entro records, estos no se me refrescan en ninguna otra hasta que la gente (la que esta metiendo datos) no sale del sistema.

¿y esas transacciones que insertan esos registros, se confirman con commit? Ninguna otra transacción puede ver los cambios que haga otra hasta que esta última no los confirme (commit). Además de tener, las primeras, un nivel de aislamiento lo suficientemente bajo (p. ej. read_commited) para poder ver los cambios.

Saludos.

P.D. Lo de "Urgente" del título sobra -> ver Guía de estilo (enlace en la firma).

cval 02-04-2004 16:26:24

cambiar el nivel de aislamiento
 
Hola,
A mí me pasa lo mismo, estoy intentando cambiar el nivel de aislamiento de la transacción, me gustaría saber como se hace.

Gracias

kinobi 02-04-2004 16:56:42

El nivel de aislamiento de la transacción no lo puedes cambiar; cuando inicias una (aunque lo haga implícitamente el mecanismo de acceso que utilices) se arranca con un nivel de aislamiento que perdura hasta el final de la misma. Si lo que quieres saber es cómo especificar ese nivel en el arranque, tendrás que decirnos que mecanismo (qué componentes) de acceso estás utilizando.

Saludos.

cval 02-04-2004 17:22:47

Uso de IBX y Delphi 7 con fb 1.5
 
Hola

Estoy utilizanto los IBX de delphi 7, sobre firebird 1.5

creo que ya he conseguido algo, poniendo en el
IBTransaction el parámetro:
isc_tpb_read_committed
que he encontrado en la documentacion de la API del interbase.

me falta conseguir tb como puedo tener un bloqueo optimista en interbase,

y he visto que con el refresh de un IBquery unido a un IBupdate consigo refrescar el registro sobre el que tengo el cursor solamente. y con resync no consigo que el cusor se quede en el sitio que estaba originalmente.
no sé si esto será posible.

Gracias de antemano

kinobi 02-04-2004 17:27:56

Hola,

Cita:

Empezado por cval
me falta conseguir tb como puedo tener un bloqueo optimista en interbase,

InterBase utiliza bloqueos optimistas, en el sentido de que un redactor no bloquea a otros lectores, pero sí, obviamente, a otros redactores.

Cita:

Empezado por cval
y he visto que con el refresh de un IBquery unido a un IBupdate consigo refrescar el registro sobre el que tengo el cursor solamente.

Sí, es el comportamiento normal del método Refresh en IBX. Si quieres un refresco de todo el Dataset, tendrás que forzarlo, por ejemplo con una reapertura del mismo.

Cita:

Empezado por cval
y con resync no consigo que el cusor se quede en el sitio que estaba originalmente.
no sé si esto será posible.

No sé qué decirte. Hace mucho que no uso Delphi ni IBX.

Saludos.

cval 02-04-2004 17:51:19

gracias
 
Gracias,
Es que estoy apreendiendo interbase a marchas forzadas y esta tarde tocan las pruebas :)

Lo del bloqueo optimista lo decía porque modifico en una aplicación un registro, pero no hago el commit de la transaccion, en la otra aplicación le doy a refrescar el registro, y se queda bloqueado esperando a que la primera aplicación realice un commit o un rollback.
Me ha parecido extraño, pero como puedo evitar esto?
ye he visto que es cosa de la propiedad isc_tpb_read_committed
realmente tenía que poner:
read_committed
rec_version
nowait
tenía que hacer doble click sobre el IBtransaction para averiguarlo :)

gracias,

kinobi 02-04-2004 18:06:20

Hola,

claro, pero el optimismo del bloqueo se basa en que los redactores no bloquean a los lectores, no que no bloqueen a otros redactores.

Saludos.

cahosoft 02-04-2004 21:49:50

nivel de aislamiento en interbase
 
bueno... yo lo hago de esta mane.....
1. me conecto al *.gdb por medio del componente IBDatabase y IBTransaction.. al principios los clientes no observaba las actualizaciones que hacian cada uno... hasta que se salian de la aplicación y volvian a entrar....
2. la solucion fue que el componente IBTransaction le doy doble click y se abre la ventana "Transaction Properties"
3. escoger la opción Read Commit

4. listo.....

claro eso si tulizas los componentes IBDatabase y IBTransaction para la conexion


La franja horaria es GMT +2. Ahora son las 08:14:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi