FoxPro/Visual FoxPro - Tablas que permanecen abiertas

 
Vista:

Tablas que permanecen abiertas

Publicado por Roberto Rangel (18 intervenciones) el 20/11/2003 22:38:19
Hola, tengo una situacion que quisiera comentar a ver si alguno conoce la solucion:

Desde la ventana de comandos de Visual FoxPro ejecuto un query simple de una tabla llamada estados.dbf

SELECT * FROM estados INTO CURSOR x1

me trae la informacion correctamente y luego cierro el cursor

USE IN x1

y efectivamente lo cierra pero la tabla estados.dbf queda abierta y no me permite abrirla nuevamente con otro alias, me marca "File is in use", no se cierra a menos que ejecute un CLOSE TABLES. Si no coloco el resultado en un cursor sucede lo mismo.

Tengo establecido el SET EXCLUSIVE en OFF para trabajar en modo compartido pero de alguna manera el query abre los archivos DBF de forma extra~n que no me permite ejecutrar un USE pero si otro SELECT.

Pienso que este detalle de que las tablas sigan abiertas me esta pegando en el performance de mis sistemas, ya monitorie desde Linux/Samba y desde Windows XP y en ambos casos los archivos quedan abiertos.

Alguien sabe la razon de esto y como corregirlo?

Gracias y saludos.
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:Tablas que permanecen abiertas

Publicado por Roman Suazo (2723 intervenciones) el 20/11/2003 23:05:50
Tal ves este Es el caso...
Lo mas seguro es que la tabla esta en dbc, entonces antes de abrir la base de datos usa el SET EXCLUSIVE OFF, y no despues de abrirla.
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:Tablas que permanecen abiertas

Publicado por Roberto Rangel (18 intervenciones) el 20/11/2003 23:11:56
Hola, muchas gracias por tu respuesta.

Efectivamente la tabla esta dentro de un contenedor de base de datos DBC pero el SET EXCLUSIVE OFF lo hago desde un inicio antes de hacer. Tambien hice pruebas sobre tablas que no esten dentro de contenedores de bases de datos DBC y se comporta de la misma forma por lo que el problema debe ser otro.

Tu no tienes el mismo problema que yo si intentas reproducirlo desde la ventana de comandos?

Saludos
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:Tablas que permanecen abiertas

Publicado por Roman Suazo (2723 intervenciones) el 20/11/2003 23:35:34
Ahorita el foro esta fatal!!!!!!!!!! Esta lentisimo por eso no puedo ayudar
lo mejor posible.

Prueba con algo asi

use mitabla in 0 alias ´NuevoAlias´ again

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:Tablas que permanecen abiertas

Publicado por Roberto Rangel (18 intervenciones) el 20/11/2003 23:43:47
Gracias nuevamente por tu respuesta Roman.

Efectivamente, utilizando la clausula AGAIN en el comando USE puedo abrir la tabla que dejo abierta el query pero lo que yo mas necesito es que esa tabla se cierre cuando yo termine de utilizar la informacion del query y eso es lo que no hace. Puedo cerrarla mediante CLOSE ALL o directamente un USE IN estados pero quisiera saber por que razon se queda abierta. Tal vez sea correcto que no lo haga pero pienso que eso me esta restando rendimiento en el sistema.

Saludos.
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:Tablas que permanecen abiertas

Publicado por Roman Suazo (2723 intervenciones) el 20/11/2003 23:56:50
Noi te entiendo bien, lo que cuentas me parece normal.

-Abres la tabla para hacer una consulta
-creas un cursor (como quien dice abres otra tabla) a partir d ela tabla
abierta
-cierras el cursor (lo cerras porque ya no lo necesitas)
-la primera tabla esta abierta

Es normal y mejor que queda la primera tabla abierta, que tal que necesites crear otra consulta (tendrias que abrir otra vez la tabla, imaginate!). Abres una cosa explictamente, me imagino que la tienes
que cerrarla explicitamente.

Por que tanto lio con usar el USE IN de nuevo? A lo mejor se me escapa algo, pero hasta donde entiendo el asunto parece logico.

Otra opcion por que no creas consultas o vistas asi no tendias que usar
el USE in dos veces (una para el cursor la otra para la tabla). Creo que
las vistas te vendria bien en tu caso.
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:Tablas que permanecen abiertas

Publicado por Plinio (7841 intervenciones) el 21/11/2003 00:32:06
Roberto cada vez que ejecuta un SELECT todas las tablas que participan (clausula from) en el se abren.
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:Tablas que permanecen abiertas

Publicado por Roberto Rangel (18 intervenciones) el 21/11/2003 00:46:08
Hola, gracias por tu respuesta.

Efectivamente, dentro de las pruebas que he hecho veo que funciona tal y como dices, el detalle es por que permanecen abiertas cuando termino de utilizar el cursor, por que no se cierran?

Con las herramientas de administracion de mi servidor veo que una gran cantidad de archivos permanecen abiertos por esto mismo, algunos de estos archivos tienen cientos de miles de registros y creo que eso esta alentando considerablemente el rendimiento de la red.
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:Tablas que permanecen abiertas

Publicado por Plinio (7841 intervenciones) el 21/11/2003 00:49:30
Te recomiendo usar Seccion privada de datos en cada pantalla y cerrar cada tabla utilizada al cerrar el formulario. Claro si usas pantalla con secion privada de datos tendras que poner en el init de cada una ciertos "seteos" que utilizas en el sistema completo. Como por ejemplo SET TALK ON, SET SAFETY ON, ETC.
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:Tablas que permanecen abiertas

Publicado por Roberto Rangel (18 intervenciones) el 21/11/2003 00:55:47
De hecho esa es la unica solucion que he encontrado hasta ahora desde que empece a buscar solucion a este problema.

Probe utilizando DATASESSION en modo PRIVATE y ejecutando un CLOSE ALL en el evento DESTROY de mi formulario estandar para que se herede a todos los formularios y veo que funciona, lo que no sabia era lo de los sets para cada formulario, es totalmente necesario?

Muchas gracias por tu apoyo.

Saludos
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:Tablas que permanecen abiertas

Publicado por Plinio (1 intervención) el 21/11/2003 15:23:21
SI, para que no te encuentres con muchos .t., valores de variales, etc. en tu screen. Prueba corriendo el sistema desde fuera de visual foxpro y veras lo que te digo.
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:Tablas que permanecen abiertas

Publicado por Roberto Rangel (18 intervenciones) el 21/11/2003 16:39:27
Gracias por tu apoyo, el dia de hoy voy a hacer los cambios en mi sistema y ver como se comporta.

Saludos.
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:Tablas que permanecen abiertas

Publicado por Roman Suazo (2723 intervenciones) el 20/11/2003 23:41:37
Ahorita el foro esta fatal!!!!!!!!!! Esta lentisimo por eso no puedo ayudar
lo mejor posible.

Prueba con algo asi

use mitabla in 0 alias ´NuevoAlias´ again
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