FoxPro/Visual FoxPro - No borrar Cursor

 
Vista:

No borrar Cursor

Publicado por Joan (8 intervenciones) el 24/02/2021 15:44:00
Buenas tardes.

Tengo un grid en mi form al que le he metido el contenido de un Cursor que he creado.
Ahora bien cuando hago USE de cualquier tabla automáticamente desaparece ese cursor del grid, ¿por qué sucede esto?
¿cómo se podría evitar?

Gracias de antemano
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
sin imagen de perfil
Val: 147
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

No borrar Cursor

Publicado por zarlu (97 intervenciones) el 24/02/2021 18:19:41
Buenas tardes Joan!

Al parecer lo que estás cerrando con USE es el cursor asociado al grid.

USE sin argumentos cierra la tabla/cursor abierta en el área de trabajo actual.

Podrías probar:
USE IN elalias

ó:
SELECT elalias
USE

Suerte
zarlu
Chetumal, Quintana Roo, México
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

No borrar Cursor

Publicado por Joan (8 intervenciones) el 24/02/2021 21:17:27
Muchas gracias por tu respuesta, la verdad es que me resolvió la duda... Así que si yo uso el método USE borraré el cursor que tenga.

Pero es que yo necesito usar USE para leer una tabla DBF en modo shared:

use >tabla dbf< SHARED

eso automaticamente borra el cursor.

O existe otra forma de sar la tabla dbf sin borrar los cursores.

GRacias
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
sin imagen de perfil
Val: 147
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

No borrar Cursor

Publicado por zarlu (97 intervenciones) el 24/02/2021 22:45:41
Buenas tardes Joan!

Tu pregunta: "....eso automáticamente borra el cursor."
La respuesta es: NO

"USE" abre/cierra tablas. En el caso de cursores temporales implícitamente los elimina al cerrarlos
"USE" sin argumentos ó "USE IN lc Alias cierra las tablas

En tu caso habría que ver como alimentas el Grid, Usas el RecordSource del Grid?

Lo que podría estar pasando es que al no tener definido el RecordSource al abrir otra tabla (USE) se cambia la tabla fuente del grid y "desaparecen" los registros.

Lee sobre SELECT Command en la ayuda de VFP.

zarlu
Chetumal, Quintana Roo, México
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

No borrar Cursor

Publicado por jose camilo (805 intervenciones) el 26/02/2021 04:22:27
como han comentado varios colegas el use TUTABLA no borra el cursor pero. debes tomar en cuenta lo siguiente.
fox tiene por decirlo asi una lista numerada donde va colocando cada tabla asi que se veria algo asi
1.... cliente
2.... articulo
3.... otras
4.... otras

se hace un select 1
use ventas
entoces reemplaza la tabla cliente por ventas en la posocion uno, cerrando la tabla cliente. que es lo que ocurre a ti en el grid. asi que acostumbor tener un listado de todas mis tablas con una posicion prefijada de la lista y antes de usar una tabla busco en mi lista privada que posicion le asigno en el select y de esa manera evito lios de cierres de 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

No borrar Cursor

Publicado por Joan (8 intervenciones) el 26/02/2021 11:38:34
Buenos días, y gracias a todos ustedes por vuestras respuestas, lo cierto es que se aprende mucho en este foro gracias a vuestro trabajo, mi enhorabuena.

La verdad es que sí que me borra el contenido del cursor1 , porque el grid queda vacío, y al decirle que ponga el contenido del cursor1 en grid con loadresource me deja todo en blanco. Eso es porque el contenido del cursos se borra.

Mi solución ha sido ingeniosa, un poco aparatosa pero es rápida y funciona.

Lo que hice fue ANTES de cualquier USE decirle a mi programa que el contenido del grid, o de cursor1 me lo guarde en una tabla externa temporal.dbf. Cuando se borra, simplemente le digo que vuelque los valores de esa tabla temporal en el grid, es decir, volver a crear el cursor1. No encontré otra forma, pero es lo que busco y funciona.

Graciasss!!
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