FoxPro/Visual FoxPro - Apertura de archivos

   
Vista:

Apertura de archivos

Publicado por alexcoinc (449 intervenciones) el 01/09/2007 16:08:41
Tengo unas tablas libres creadas en una carpeta determinada asi: ruta='\ta2007\'
(Ruta es una variable pública)

En dicha carpeta estaran todas las tablas del año 2007 y si coloco ruta='\ta2008\', pues estaran las tablas del año
2008, etc.

Ahora bien, como mis formularios no tendrán definidas tablas en el entorno de datos, se creo una función que me abre
las tablas que el usuario desee desde la ruta escogida libremente, es decir desde TA2007 o TA2008.

La función es:

FUNCTION abrearchi
PARAMETERS como,opci
DO CASE
CASE como=1
DO CASE
CASE opci=1
SELE 54
USE alltrim(ruta)+'tipotar' alias movtita
set order to codigo
go top
do form f_tipotar
CASE opci=2
SELE 55
USE alltrim(ruta)+'tarifa' alias movtari
set order to institucio
go top
do form f_procedi
ENDCASE
OTHERWISE
ENDCASE
RETURN

Si quiero abrir la tabla TIPOTAR, ejecuto: abrearchi(1,1)
Si quiero abrir la tabla TARIFA, ejecuto: abrearchi(1,2)

EN TIEMPO DE EJECUCION:
***********************
En el formulario f_procedi, pido algunos datos y tengo un combo que me utiliza la tabla TIPOTAR, en el rowsource, asi:

sele nombre,codigo from (alltrim(ruta)+'tipotar') into cursor cur_titar
(Instrucción SQL)

Hasta aqui todo funciona bien y puedo salir de este formulario: thisform.release()

PERO INMEDIATAMENTE, cuando se desea utilizar el otro formulario es decir el f_tipotar(de la función), ejecuto abrearchi(1,1) e
inmediatamente me arroja un error que dice: "La tabla ya esta en uso".

Que está pasando, acaso con el thisform.release() no se cierran todas la tablas o es que la tabla utilizada en el combo del
formulario anteriormente abierto, me quedó usada ????

Les agradezco su colaboración.

Por favor denme una solución, o que estoy haciendo indebidamente ....

Gracias.

alexcoinc@gmail.com
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Apertura de archivos

Publicado por Plinio (7771 intervenciones) el 01/09/2007 16:14:49
Thisform.release solo te cierra el formulario, no cierra tablas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Apertura de archivos

Publicado por alexcoinc nuevamente (449 intervenciones) el 01/09/2007 19:28:34
PLINIO

Siguiendo tu comentario acerca del thisform.release(), pense entonces en cerrar las tablas en los select respectivos
y modifique la funcion anexando el cierre obligado; quedo asi:

FUNCTION abrearchi
PARAMETERS como,opci
DO CASE
CASE como=1
DO CASE
CASE opci=1
SELE 54
USE alltrim(ruta)+'tipotar' alias movtita
set order to codigo
go top
do form f_tipotar
SELE 54 && Cuando sale del forumlario lo proximo que hace es cerrar el archivo
use
CASE opci=2
SELE 55
USE alltrim(ruta)+'tarifa' alias movtari
set order to institucio
go top
do form f_procedi
SELE 55 && Cuando sale del forumlario lo proximo que hace es cerrar el archivo
use
ENDCASE
OTHERWISE
ENDCASE
RETURN


PERO ME SIGUE SALIENDO EL MISMO ERROR; LA PREGUNTA ES : CUAL SERA LA TABLA A LA QUE SE REFIERE EL ERROR,
COMO ME PODRIA DAR CUENTA ????

FINALMENTE PLINIO , de que forma se podrían abrir varios archivos (NO EN EL ENTORNO DE DATOS DEL FOMULARIO)
y poder trabajar con ellos; o la única manera es con los select. te pregunto esto pues abrirlos asi como te
muestro en la función como que ocasiona problemas ... o que opinas de la función.


Gracias por tu colaboración.

alexcoinc@gmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Apertura de archivos

Publicado por Plinio (7771 intervenciones) el 02/09/2007 00:35:24
Te recomiendo que a la hora de abrir una tabla haga lo siguiente
IF !USED('tutabla') &&si no esta en uso
SELEC 0
USE tutabla AGAIN ALIAS tutabla
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar