bueno yo te cuento como yo lo hago, yo no utilizo el entorno de datos de los formularios y/o reportes en cambio utilizo un objeto que he creado para la apertura de las tablas que es este:
*//////////////////////////////////////////////////////////////////////////////
*// DEFINICION DE CLASE P/ERRORES DE RED
*//////////////////////////////////////////////////////////////////////////////
DEFINE CLASS _XioNet AS CUSTOM
_Tloop=.F. &&TRY LOOP OR FAIL
_Tsuccess=.F. &&SUCCESS OR FAILED
*//////////////////////////////////////////////////////////
FUNCTION XOPEN( _Xname, _Xalias, _Xarea, _Xaccess, _Xloop )
*//////////////////////////////////////////////////////////
IF PARAMETERS()!=5
MESSAGEBOX( [WPARAMETERS], 16, [ERROR] )
THIS._Tsuccess=.F.
RETURN (THIS._Tsuccess)
ENDIF
WITH THIS
._Tloop=_Xloop
._Tsuccess=.T.
ENDWITH
DO CASE
CASE _Xaccess=="1"
USE (_Xname) IN (_Xarea) ALIAS (_Xalias) EXCLUSIVE
CASE _Xaccess=="2"
USE (_Xname) IN (_Xarea) ALIAS (_Xalias) SHARED
CASE _Xaccess=="3"
USE (_Xname) IN (_Xarea) ALIAS (_Xalias) SHARED NOUPDATE
ENDCASE
RETURN (THIS._Tsuccess)
ENDFUNC
*///////////////////////////////////////
FUNCTION ERROR( nError, cMethod, nLine )
*///////////////////////////////////////
IF THIS._Tloop
MESSAGEBOX( [ACCESO DENEGADO], 16, [WARNING] )
RETRY
ENDIF
THIS._Tsuccess=.F.
ENDFUNC
*/////////////////
FUNCTION _R_LOCK()
*/////////////////
DO WHILE !RLOCK()
MESSAGEBOX( [FALLO DE BLOQUEO], 16, [WARNING] )
ENDDO
RETURN .T.
ENDFUNC
*/////////////////
FUNCTION _F_LOCK()
*/////////////////
DO WHILE !FLOCK()
MESSAGEBOX( [FALLO DE BLOQUEO], 16, [WARNING] )
ENDDO
RETURN .T.
ENDFUNC
ENDDEFINE
esta clase debes crearlo e instanciarlo en tu programa principal con atributo publico
ej:
PUBLIC _xopen
_xopen=CreateObject( "_XioNet" )
una vez hecho esto para abrir tus tablas en tu formulario por ejemplo en el metodo THISFORM.INIT() tipeas esto
XMODOAPERTURA="1" &&1->MODO EXCLUSIVO 2->MODO COMPARTIDO 3->SOLO LECTURA
XLOOP=.F. &&.F. HACE EL INTENTO UNA VEZ, .T. QUEDA EN UN BUCLE QUE REINTENTA HASTA LOGRAR O
&&HASTA QUE EL OTRO USUARIO SUELTE LA TABLA EN CUESTION
IF !_XOPEN.XOPEN( "C:MITABLA.DBF", "MIALIAS", 0, XMODOAPERTURA, XLOOP )
MESSAGEGOX( "FALLO LA APERTURA DE MITABLA.DBF", 16, "ERROR" )
RETURN .F.
ENDIF
HECHO EN VISUAL FOX 6.0
BUENA SUERTE!!