Tabla en uso ******Ayuda*********

waldesro
24 de Noviembre del 2003
Tengo la siguiente situacion:

En el evento init de un formulario abro una tabla, la cual pertese a una base de datos, brorro toda la informacion que tiene y despues le hago un PACK. pero en el evento lostfocus de un textbox quiero actualizar dicha tabla pero primero hago lo siguiente

IF USED('MiTabla')
SELECT MiTabla
ELSE
USE MiTabla
ENDIF

supuestamente la tabla esta cerrada porque en el evento "init" despues del PACK la cierro y no la toco mas hasta el evento "lostfocus" del textbox. Pero me da un error de que la tabla esta en uso ("Archivo en Uso"). lo que me pregunto es porque llaga a hacer el USE que esta en el ELSE si esta en uso la tabla, deberia hacer el "select MiTabla" eso creo yo.
Otra cosa la tabla no esta en el entorno de datos.
y en el data session no esta abierta.

Si alguien puede aclararme este misterio por favor se lo agradeceria.

Miguel
24 de Noviembre del 2003
El problema es que no le indicas el 谩rea de trabajo en el que la est谩s usando, necesaria para que USED te la encuentre. Entonces entra por el ELSE y la intenta abrir en otra 谩rea distinta y como es en exclusiva te da ese mensaje de error.

Y yo me pregunto ¿c贸mo la usas en el init y c贸mo la cierras? si por ejemplo pones SELECT 18, USE TABLA, PACK, ETC., USE, la usas en el 谩rea 18 y la cierras, pero si no indicas en que 谩rea lo haces, no puedes cerrarla, a menos que hagas un CLOSE TABLE, por eso precisamente al intentar volver a abrirla te da el error.

Bueno, si despu茅s de este rollo has entendido algo ya eres un experto. Salu2

Francisco
24 de Noviembre del 2003
Es un problema simple de resolver querido amigo si te da un mensaje de error indicandote que la tabla esta abierta lo unico que tienes que hacer es poner un CLOSE TABLE una linea antes de la linea que te da el error si no te resulta mandale un CLOSE TABLE ALL, y si no te resulta con eso entonces mandale un CLOSE DATABASE, y si tampoco se te quita el error pruebale con CLOSE DATABASE ALL, y si esque sigues con el error, realmente estas jodido jeje... espero que te sirva de algo. saludos.

Alex
24 de Noviembre del 2003
¿C贸mo est谩n amigos?

En este momento emule el procedimiento que hizo Waldestro en VFP7.

Haciendo esto.

Init del Form
USE Bate2 Excl
DELETE ALL
PACK

Lost Focus del TextBox
IF USED('Bate2')
SELECT Bate2
ELSE
USE Bate2
ENDIF

APPEND BLANK
Replace nombre WITH This.Value

y en el DataSession del Form.
DataSession = 2 - Private Data Session

Y no hubo ning煤n error.
En este caso no solo se trata buscar otra forma de cerrar la tabla sin贸 mas bien de identificar el origen del problema pues el c贸digo aplicado parece correcto.


Alex Vargas