FoxPro/Visual FoxPro - DUDA APLICACION EN RED

   
Vista:

DUDA APLICACION EN RED

Publicado por Rafa (21 intervenciones) el 29/03/2010 20:49:23
Hola que tal de nuevo, miren tengo un problema con un sistema que desarrolle para que este trabaje en red.

La verdad este sistema trabaja muy bien, guarda, borra y actualiza registros muy bien. Pero el cliente me dice que cuando dos empleadas estan usando en sus pc el sistema, el mismo formulario de altas de productos (por decirlo asi), tienen problemas.

No se si habra algun comando para poner al inicio del proyecto, que cuando varias pc actualicen la base de datos al mismo tiempo no genere problemas.

Yo las tablas asi las selecciono:

sele 0
use disentre shared in 0
set order to folio

y asi tengo el proyecto:

_screen.backcolor=rgb(192,192,192)

clear screen
zoom window screen max
_screen.caption = "Solatec System"
_SCREEN.CLOSABLE=.F.

set default to
set date dmy
SET SAFETY OFF
SET EXCLUSIVE OFF
set dele on
*SET REFRESH TO 5

set help on
set help to "ayuda"
public fec

do mprin.mpr
do form inicio

do form bar
_screen.caption = "Solatec System" + " - " + titulo
IF danger=1
clear event
set sysm to defaul
else
read event
endif

Comparto la tabla y quito el exclusivo, como les digo no hay problemas al chambear en red, solo cuando dos personas entran al mismo tiempo a la captura.

Gracias.
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:DUDA APLICACION EN RED

Publicado por es_binario (757 intervenciones) el 29/03/2010 22:50:00
Lamentablemente tu aplicacion no es una aplicacion en red, ya que una aplicacion en red tiene un servidor de base de datos y uno o mas clientes que se conectan a ella para interactuar, sin embargo podrias usar vistas para obtener resultados sobre la base de datos, y solo en caso de que se valla a registrar algo usar el insert o el update para hacerlo, por cierto olvidate de skip o del replace with, tambien cuando llames a las vistas usa el nodataonload en .t. para que las llames con =requery() asi los datos siempre van a estar actualizados, esto te funcionara bien con unas 4 maquinas, y si no has trabajado demasiado en la aplicacion mi recomendacion es que hicieras una verdadera aplicacion cliente servidor con un verdadero motor cliente servidor, no con dbf.

Saludos
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:DUDA APLICACION EN RED

Publicado por xx (378 intervenciones) el 01/04/2010 14:23:59
Bueno si no quieres pasarte a una aplicacion cliente-servidor la solución esta en que manejes correctamente los bloqueos y tipo de apertura de ficheros y las operaciones permitidas y no permitidas para cada tipo de apertura de fichero es decir si tu abres una tabla compartida no puedes realizar ZAP, PACK, REINDEX etc. si tu abres una tabla de solo lectura no puedes actualizar o cambiar ningun valor de dicha tabla, si tu abres de modo exclusivo si puedes hacer lo que se te antoja pero mientras ninguna otra pc tiene acceso a dicha tabla, asi que mi recomendacion es que si trabajas por ejemplo en un ABM de producto:

1 la apertura de tu tabla de producto la debes realizar en modo compartido USE ... SHARED.
2 cuando modificas un registro debes hacer un bloqueo sobre el registro previamente asi dos maquinas no pueden modificar el mismo registro c/RLOCK().
3 cuando das de altas algun registro debes bloquear la tabla para que nadie de de altas mientras tu lo haces para corroborar por ejemplo que el producto no exista previamente y que no esten dando de altas al mismo producto desde dos pc's diferentes c/FLOCK().
4 debes implementar el borrado logico o simplemente quita el borrado de productos esto se explica asi: para borrar un registro debes hacer DELETE y luego PACK como el PACK no esta permitido para apertura en modo compartido entonces puedes implementar el borrado logico con SET DELETE ON u omitir simplemente el registro cuando este esté marcado.

Espero haber ayudado.
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