compartir tablas en red

jackote
15 de Enero del 2004
que necesito para hacer que comparta las tablas en una red local de windows
tengo una base la cual estara en una maquina, en otra mauqina quiero instalar el mismo programa pero necesito que usen la misma base y tablas...

use esto en el primer programa (el que va a ser el "servidor2 por decirlo asi)

select 1
use usuario alias id shared

yo suponia que con esta directiva de "shared" me permitiria abrir en la segunada maquina la misma tabla.. pero no me deja...
como o que tengo que decirle?

en la segunda maquina uso el path asi:
set default to z:programa

donde z es una unidad compartida de la maquina principal, y " programa" es el directorio donde esta instalado el primer programa..

Rodolfo
15 de Enero del 2004
Hola:
Mira depende también si quieres abrir las tablas solamente como consulta o si también los usuarios van a grabar datos al mismo tiempo. Si es de consulta con el Shared te permite que los abras. Te recomiendo que pongas el
Set Exclusive Off
además si los usuarios van a grabar, debes usar un bufereo para evitar que dos usuario traten de modificar el mismo registro al mismo tiempo
Para esto tienes que poner
Set Multilocks On
esto es para que un usuario que agarre un registro quede bloqueado para otros.
Usa tambien
Set Reprocess To 1
Esto le dice al sistema que el usuario que está tratando de abrir el registro ocupado lo intente solamente una vez.
En tu aplicación te recomiendo que uses la instrucción Rlock(). Esta es una función que te devuelve VERDADERO si puede bloquear el registro o falso si no lo puede.
Este sería un ejemplo más completo:
Set Exclusive Off
Set Multilocks On
Set Reprocess To 1

Ahora haces tu búsqueda por ejem:
Seek BuscaArticulo
If found() * Si lo encontró
If Rlock() * Si pudo bloquear el registro
ThisForm.Text1.Value=BaseDatos.Dato
Else
MessageBox("Registro bloqueado",0," ")
EndIf
Else
MessageBox("El articulo no se encuentra",0," ")
EndIf
Ojalá te haya podido ayudar un poco
Saludos

jackote
15 de Enero del 2004
o.ki, si me parec muy bien lo que me indocas, solo una pregunta, al usar el "if rlock()" despues tengo que "desbloquear" el registro? como lo hago? o al liberarlo se desbloquea?

rubert
15 de Enero del 2004
usa unlock depues de los replace para liberarlo

wallyman2003
15 de Enero del 2004
primero tenes que ver que ninguno de los usuarios habran las tablas en forma exclusiva.
y si las habris desde fox tenes que ver en tools-
option-general(que no este tildada la opcion open exclusive)
saludos wally

jackote
15 de Enero del 2004
o.k, estaba activa esa directriz, ya la quite,
ahora, la pregunta, es en los programas que seran los "clientes" tambien debo poner "shared"

wallyman2003
15 de Enero del 2004
no .
lo que tenes que tener en cuenta es tener algun campo dentro de las tablas para informar que un usuario esta urtilizando un registro y que otro usuario no modifique nada mientras un registro sea utilizado por otro.
ejemplo yo utilizo compo(mlock= 1 ) hay que validar que cuando un usuario quiera entrar a ese registro mlock sea igual a 0
saludos wally