FoxPro/Visual FoxPro - Error 109 en tablas compartidas

 
Vista:

Error 109 en tablas compartidas

Publicado por hugo H. (15 intervenciones) el 18/12/2003 22:11:02
Tengo una aplicación multiusuario que se está utilizando desde hace poco más de dos semanas sin problemas. El aplicativo consiste en un programa concentrador que se ejecuta en una máquina server y los programas satélites instalados en cada máquina de usuario. Tengo cuatro tablas generales compartidas que se leen y escriben desde todos los puestos de trabajo y el server. Todas las tablas se abren en forma "shared" de todas las estaciones.
El problema es el siguiente: me han informado algunos usuarios que de vez en cuando el programa muestra un mensaje de error: Error 109, el archivo esta en uso por otro usuario.
Esto me tiene preocupado ya que no sé cómo puede generar este error si los archivos están abiertos en modo compartido. Según tengo entendido, al abrir los archivos en modo compartido, cuando se está escribiendo en una tabla y hay otra petición de escritura desde otro usuario este último espera automáticamente a que el primero libere la tabla. Si es asi, ¿Porqué genera este error? ¿Puede ser un problema de Fox que en algún momento no espere a que el otro usuario libere la tabla?
Trabajo con tablas libres, sin base de datos alguna.
Incluí en el aplicativo del server el comando "set lock off".

Agradezco infinitamente las sugerencias que me puedan brindar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error 109 en tablas compartidas

Publicado por Roman Suazo (2723 intervenciones) el 18/12/2003 22:45:54
Lo que debes hacer es capturar el error cuando se ejecuta el tableupdate, checa la funcion AERROR, por ejemplo, digamos que
no se pudo actualizar una tabla al momento del ejecutar el tableupdate,
seguido de este comando usa al Aerror para ver si hubieron errores,
de ser asi pones un mensaje y le dices al usuario que vuelva ejecutar
el procesos debido a que otro usuarios esta haciendo uso del registro,
etc. Ademas checa set reprocess (no lo pongas en modo infinito).

El error que reciben los usuarios se dan cuando dos usuarios estan
usando el mismo registro al mismo (lo cual deb ser raro en la mayoria de los casos). Hay otras forma de evitar los errores, una es que cuando usuario decide editar un registro, este se bloquea y evita qu otro usuario
haga cambios, es decir, el registro queda en modo de lectura, hasta que el primer usuario lo desbloquee. Esto se implementaria con botones y pantallas especiales. Si no hay mucho trafico y son pocos los usuarios mejor quedate con el bloquee del tableupdate.


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error 109 en tablas compartidas

Publicado por elseif (7 intervenciones) el 16/01/2004 17:48:30
Usas el SET EXCLU OFF
???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error 109 en tablas compartidas

Publicado por TITO (311 intervenciones) el 18/12/2003 22:57:20
Zhero:
Tu dices en parte de tu nota: "....otro usuario este último espera automáticamente a que el primero libere la tabla." Lo que sucede es que el usuario no toma y bloquea la tabla si no que el registro, a no ser que tu directamente estes bloquenado la tabla. ¿No sera ese el problema?
Que te vaya bien,
TITO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error 109 en tablas compartidas

Publicado por hugo H. (15 intervenciones) el 22/12/2003 23:11:21
Tenes razon, me equivoque, no bloquea la tabla, bloquea el registro, pero no se supone que el mismo motor del fox se encarga de bloquear el registro cuando lo escribe y desbloquearlo cuando termina de escribirlo? por lo tanto, este error no deberia ocurrir, ya que el segundo usuario queda en espera a que el primero termine... hay algo que no se o estoy entendiendo mal?
no use set reprocess ni otro instruccion especial como Lock.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error 109 en tablas compartidas

Publicado por Plinio (7841 intervenciones) el 19/12/2003 00:27:27
Record is in use by another user (Error 109)
You have attempted to write to a record that is locked by another user.

De acuerdo a la ayuda, estas intentando escribir un registro que esta bloqueado por otro usuario. Chequea si esta dando un lock en algun lugar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar