Tengo una aplicación en VFP 7.0 pero ahora quiero desarrollarla para red. Estoy utilizando el parámetro SHARED y una rutina con el flock pero tengo conflicto al abrir y cerrar mis tablas, sobre todo si utilizo un grid y ejecuto otra forma. ¿Qué hago?, ayúdenme por favor.
Abre todas tus tablas así: Use tabla1 shared in 0 Use tabla2 shared in 0 Use tabla3 shared in 0 Use tablan shared in 0 Eso las abrirá de forma compartida. Hazlo sólo UNA VEZ en el inicio de la aplicación. Y para hace referencia a la tabla sólo escribes: select tabla1 Replace etc, etc
Gracias experto. Una duda: desde una forma utilizo un grid de solo lectura de una tabla por y con un botón de comando ejecuto otra forma donde utilizare un replace o un append blank. Debo abrir desde la primera forma como me dices: use tabla1 shared in 0, ¿o cómo le hago?. Por otro lado: ¿No es necesario utilizar la rutina con el flock?. Gracias por tu ayuda.
Las instrucciones de apertura de tablas las haces por lo general una sola vez en el inicio de la aplicación. El inicio depende de cómo lo tengas configurado: si inicias con un form, entonces lo pones en el init o load o si inicias con un prg, entonces lo pones allí, al principio del prg. En la práctica lo que hago es crear un procedimiento que se encargue de esa apertura de datos, el cual llamo desde los lugares que te menciono arriba. Definitivamente si tu interés además es "controlar" el acceso a una tabla por uno o más usuarios a la vez, Flock te ayuda. Sin embargo estando la información eun grid, ya el mismo fox te ayuda en ese proceso. Ejemplo: Close databases OPEN DATABASE (HOME(2) + 'Data\testdata') USE products && Opens products table SET REPROCESS TO 3 SECONDS SELECT * FROM products INTO TABLE newprods IF FLOCK( ) *** New product initialization *** REPLACE ALL in_stock WITH 0.00 REPLACE ALL on_order WITH 0.00 WAIT 'Initialization Complete' WINDOW NOWAIT ELSE *** File is locked, warn user *** WAIT WINDOW 'Unable to open products file; try again later!' NOWAIT ENDIF BROWSE FIELDS in_stock, on_order && Displays newprods table USE ERASE newprods.dbf