Base de Datos en RED no funciona, que tal

margarita
21 de Julio del 2003
ojo! muchachos yo programo en vfoxpro3 y mi aplicacion no trabaja realmente en red; solo deja consultar por pantalla los registros, cuando van actualizar algun registro y hay varias personas en red manda el aviso que "registro esta siendo usado por otro usuario". En definitiva cuando se van actualizar registros no se pueden trabajar simultaneamente.
? voy a cambiar el aplicativo a vfoxpro 6 ? que me dicen si funciona realmente en red, si es asi que hicieron. por favor ayudenmen

amado jimenez
21 de Julio del 2003
Margarita, yo he desarrollado rutinas con archivos compartidos(buffers) o sea que tengo un grid, elijo uno y lo modifico o lo doy de baja en otro formulario, disparado desde el inicial, si es un alta también, en el formulario en donde vas a modificar o capturar los datos deberias tener este codigo:
set multilocks on
=cursorsetprop("buffering",5,alias())
y cuando decidas grabar deberias hacer lo siguiente
lDevuelto=tableupdate(.t.)
("buffering",1,alias()) && desactiva el modo de bufferin
si deseas algun ejemplo enviame alguna forma que estes haciendo y yo te regreso el mantenimiento en modo multiusuario, yo he tenido hasta 200 usuarios en red y en dos años no se ha corrompido la base de datos.
saludos
mi correo es [email protected]
favor de enviarme tu correo


Luisen98
21 de Julio del 2003
Suponiendo que tengas una rutina para la captura de errores, en ella describe que:
Si obtienes el error()=109 haga un RETRY, con eso forzas a que en el momento en que el otro usuario "suelte" el registro que tu ocupas...lo asegures tu para tu proceso.
Es Todo. hay otros codigos para diversos comportamientos, tales como:

108 = El archivo No esta disponible
110 = Se requiere abrir Exclusivo.

etc.
Saludos !!!


Daniel
21 de Julio del 2003
Que tal:
La solución de hacer un RETRY al capturar el error 109 no creo que sea la mejor. El problema puede ser que un usuario tenga el registro que tu quieres actualizar bloqueado en un formulario y que no lo cierre. Esto puede ocurrir muy facilmente, pues el usuario no tiene por que saber que hay otra persona en la red intentando actualizar el registro. Si te sucediese esto, no podrías devolver el control al programa, pues te entraría en un bucle "tonto" y sólo podrías cerrar el programa con CTRL+ALT+SUP.

En mi caso, al capturar el error 109, lo aviso con un MESSAGEBOX() y no grabo las modificaciones, continuando con el proceso.

Espero que te sirva.

Daniel Pérez
Dpto. de Programación
i+d Informática

Luisen98
21 de Julio del 2003
Exactamente Daniel,
"puede ser que un usuario tenga el registro que tu quieres actualizar bloqueado en un formulario y que no lo cierre" . Tu deberas desarrollar para que esto NO ocurra, si llegaras a usar un registro en ambiente Multiusuario, sabes, por ende, que deberas liberarlo, a la mayor brevedad posible.
En mis aplicaciones, no me pasa, eso que tu mencionas y SIEMPRE, grabo la informacion en el registro/tabla. Y por lo tanto no me ha tocado hacer lo siguiente: "sólo podrías cerrar el programa con CTRL+ALT+SUP". Te concedo la razon en cuanto a los "bucles Tontos" :), por ahi pase en mis inicios. Evidentemente tenemos formas diferentes de desarrollo. Saludos!!!

Luis Emiro
21 de Julio del 2003
Amiga Margarita.
Entendi lo que quieres hacer.
Si puedes hacer con Visual version 6 todo el manejo multiusuario de tus tablas, mucho mejor que con la versión 3 que tambien lo pudieses haber hecho. Te recomiendo lo siguiente:
Debes documentarte sobre el manejo de RLOCK, FLOCK, UNLOCK. Esta es la base.
Ademas, si quieres hacer un diseño, con mejor control, aprender sobre el manejo de los buffers, tableupdate, y tablereverse.

Otra cosa, inscribete en la siguiente lista de la cual soy participante: www.portalfox.com
En esta tratanmos netamente foxpro en cualquier versión.

Si lo deseas tambien inscribete en el MUG (Grupo de Usuario Microsoft) de la comunidad Valencia Interactiva. Alli te puedo ayudar con mas frecuencia pues en la misma soy Administrador y tenemos un grupo muy colaborador.
www.groups.msn.com/valenciainteractiva

No dejes de contactarme, sea directamente a mi email o a traves de la comunidad. Tenemos en las listas mucha documentación aportada por los miembros y por los consultores de Microsoft que siempre nos ayudas (tanto en español como en ingles), ojo completamente GRATIS. Pero exigimos respeto al derecho de autor, NO PERMITIMOS promoción al uso de software sin licencia o sea no a la pirateria.

Te invito a participar y cualquier otr apersona que lea este mensaje, quedo a vuestra disposición.

Luis Emiro Mendoza Delgado
Valencia Venezuela

Luis Emiro
21 de Julio del 2003
CORRECCION para acceso al MUG Valencia Interactiva
http://groups.msn.com/valenciainteractiva

Marcelo
21 de Julio del 2003
Margarita:

El problema que presentas, no es en realidad un problema, por el contrario, es la forma que tienen las bases de desarrollo (de la versión que sea), para asegurar el principio de compartición de los archivos. !! Yo, no puedo modificar lo que esta modificando otro en la red..!, entonses ?? Cuál es la modificación que el programa debe tomar como correcta ??
Para esto existen intrucciones como ser flook(), etc. que permiten controlar el estado de un registro o dato, antes de que lo pueda utilizar un usuario en la red.

es asi, que el flujo del programa se debería estructurar mas o menos asi:

Si: no lo esta usando nadie
lo bloquea
lo uso yo
lo modifico
lo guardo
lo pueden usar los demas...


para aquellos usuarios dormilones que dejan
interminablemente un registro bloqueado...
se pueden crear rutinas que permiten
que pasado determinado tiempo sin que
el usuario realice cambios en el registro o dato
se lo cierra uno por programación ...
y liberamos el mismo para que lo usen los demas ...

Espero que te sirva