Tabla en uso ******Ayuda*********
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.
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.
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
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
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.
¿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
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
