Hola, yo desde hace un tiempo uso estas funciones..
******* SABER SI LA DB ESTA EN USO
FUNCTION DBUSO(NOMBRE)
Local OpenDB
OpenDb=.F.
On Error OpenDB=.T.
Open database &NOMBRE Exclusive
if opendb Then
*Base de datos esta en uso por otra PC
ON ERROR MG_ERROR(ERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO())
RETURN 1
Else
*Base de datos Libre
ON ERROR MG_ERROR(ERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO())
RETURN 0
Endif
ENDFUNC
******* SABER SI LA DB ESTA EXCLUSIBE
FUNCTION DBEXCLU(NOMBRE)
Local OpenDB
OpenDb=.F.
On Error OpenDB=.T.
Open database &NOMBRE SHARED
if OpenDB Then
*Base de datos esta en uso Exclusivo
ON ERROR MG_ERROR(ERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO())
RETURN 1
Else
*Base de datos esta Libre
ON ERROR MG_ERROR(ERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO())
RETURN 0
Endif
ENDFUNC