Duda en Visual FoxPro

Hola que tal, mi nombre es Juan Carlos, soy Desarrollador en Visual FoxPro, tengo dudas sobre el lenguaje, espero me puedas ayudar:
1. Como puedo bloquear ventanas de un sistema en red. Es decir, si dos usuarios ejecutan el programa y entran a la misma ventana o formulario. Hice pruebas con la instrucción:
if wexist("nombre de form")
 wait window "abierta"
else
 do form ventana
Endif
Esta instrucción solo funciona desde el mismo programa, no interactúa si son varios usuarios desde diferentes accesos a el programa. ¿Qué solución me recomiendas?
2. Tengo una tabla inventario.dbf desde la cual se mantienen las existencias de los productos, esta tabla puede llegar a tener varios accesos al mismo tiempo "shared" y al mismo registro. He probado usando lock(), pero si el otro usuario acceso a la tabla se desbloquea porque la tabla esta en modo shared, ¿qué me recomiendas hacer para que no se altere la información de esta tabla?
Saludos desde Guadalajara, Mexico.

1 respuesta

Respuesta
1
Te sugiero que agregues a tu base de datos una tabla con un campo donde se registre el nombre del usuario, que ha ingresado al sistema, otro con el nombre del formulario que está ejecutando y otro de tipo lógico que indique si ha ingresado al sistema y mediante código indiques que debe hacer cuando hay más de un usuario ejecutando el mismo formulario (puedes hacer cosas adicionales de esta manera), espero haberme hecho entender.
No te recomiendo que bloquees toda la tabla para estos casos, únicamente el registro que estás editando con Rlock y unlock esto impide que otro usuario modifique el registro que está siendo modificado por el usuario actual, debes impedir mediante programación que se altere la información de la tabla, aquí te doy un ejemplo sencillo acerca de esto:
Local lcEditar
lcEditar = .T.
If lcEditar Then
  Replace NombreTabla.Campo With Valor
  =TableUpdate() && Guardar los cambios
Endif

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas