La Web del Programador: Comunidad de Programadores
 
    Pregunta:  15660 - EVALUAR TABLAS ABIERTAS CON DIFERENTES APLICACIONES
Autor:  Giovanni Martinez
Amigos si alguien me puede colaborar se lo agradeceria
Soy algo novato con esto y me he rompido el coco y nada que logro lo que quiero bueno hay va...
SET EXCLUSIVE ON
IF !USED('MITABLA')
WAIT WINDOWS 'TABLA NO ABIERTA'
ELSE
WAIT WINDOWS 'TABLA ABIERTA'
ENDIF

Con estas lineas puedo evaluar si una dbf esta en uso o no, SIEMPRE Y CUANDO HAYA SIDO ABIERTA CON VFP O DESDE LA VENTANA DE COMANDOS.
pero si la DBF esta abierta con otro programa por ejemplo DBU o desde otra aplicacion las anteriores lineas no lo detectan y al correr el programa me genera un error.
Agradeceria me explicaran por que?? y tambien me dijeran como lo tengo que hacer?? para que funcione correctamente. sin nesecidad de tener que utilizar un controlador de errores con
ON ERROR DO miprocedimiento
si me pueden enviar unas lineas con el codigo mucho mejor
Un abrazo Giovanni

  Respuesta:  Antonio Estrada
La función Used solo te devuelve .t. cuando ha sido el programa actual el que ha abierto la tabla. Si no quieres utilizar el "On error do", puedes abrir la tabla con funciones de bajo nivel, y si no puedes es que está siendo usada:

f=fopen ("mitabla.DBF",1)
fclose(f)
if f=-1
Wait window "Tabla abierta por otra aplicación"
else
Wait window "Tabla libre"
use("mitabla")
...
...
endif

A ver si te sirve...