buenas gente duda sobre cursores

627 views
Skip to first unread message

Jose carmona

unread,
Jun 26, 2012, 8:59:09 PM6/26/12
to publice...@googlegroups.com
buenas llevo 1 mes programando en vfp y aun no se como limpiar un cursor ya llenado...gracias d ante mano al q me saque el beneficio de la duda..xD

Darío Castillejos Avilés

unread,
Jun 26, 2012, 9:31:17 PM6/26/12
to publice...@googlegroups.com

Hay dos formas de crear cursores:

 

  1. Mediante la cláusula INTO CURSOR del resultado de una sentencia SQL, ejm:

SELECT * FROM MyCursor INTO CURSOR MyCursor2

 

  1. Mediante el comando SQL, CREATE CURSOR

 

 

Si utilizas la primera opción, no los podrás “limpiar” a menos que utilices el argumento READWRITE (READWRITE, solo esta disponible a partir de VFP 7)

 

Si los creas con la segunda opción, podrás “limpiarlos” sin ningún problema.

 

Para mas información te sugiero que leas la ayuda.

 

Saludos.

 

 

 

 


mpulla

unread,
Jun 26, 2012, 10:42:50 PM6/26/12
to publice...@googlegroups.com

Hola José

Prueba

Select * From MiCursor Where 1=2 Into Cursor MiCursor ReadWrite

Saludos
Mauricio

Carlos Miguel FARIAS

unread,
Jun 27, 2012, 8:01:27 AM6/27/12
to publice...@googlegroups.com
Si esta conectado a una grilla, desconectalo de la grilla (ver propiedad recordsource),
use in elcursor
lo volves a crear y cargar
lo volves a vincular.
Saludos: Miguel, La Pampa (RA)

2012/6/26 mpulla <jmaur...@yahoo.es>

Mario Oviedo

unread,
Jul 30, 2012, 6:39:42 PM7/30/12
to publice...@googlegroups.com
zap , lo limpias

2012/6/27 Carlos Miguel FARIAS <carlosmig...@gmail.com>

Fox Learner

unread,
Jul 31, 2012, 9:15:22 AM7/31/12
to publice...@googlegroups.com
Jose,

Te repito los comentarios que te hicieron en otro de los hilos:

De Walter: 

Si lo que quieres es cerrar el cursor:
SELECT MiCursor
USE

Si lo que quieres es eliminarle todos sus registros:
SELECT MiCursor
ZAP

Si lo que quieres es desenlazarlo de una grilla:
THISFORM.Grilla1.RecordSource = ""


De Daniel Sanchez:

Me parece que lo que necesitas es esto

Select * form mitabla where 2=1

Con esto obtienes un cursor en blanco.

Ahora bien, si hay algo más que desees hacer aparte de esto, deberías indicar los detalles.

Saludos!

Fox Learner

unread,
Jul 31, 2012, 9:34:32 AM7/31/12
to publice...@googlegroups.com
Te pongo un código esquemático de lo que pondrías en tu botón de GRABAR datos (y luego limpiar el grid):

Evento Click del boton Grabar:

SET EXCLUSIVE OFF
SET DELETED ON (Para que no se vean los registros marcados para borrar)

USE Mitabla IN 0
SELE Mitabla 
GO BOTTOM

*Aquí pones tu código para añadir registros. (Append Blank, Insert)

Thisform.MiGrid.recordsource='' (Quitas el origen de datos, para que el grid no se destruya al borrar)
SELECT Mitabla
GO TOP
DELETE ALL

* Puedes hacer un ZAP si tienes activada la opción sesion privada de datos en tu form, ya que los cursores serán locales.

IF EOF() 
Thisform.Refresh()
Thisform.txtNumdeFactura.setfocus()

ELSE
SKIP -1
ENDIF

WAIT WINDOW 'Limpiando el area del grid' TIMEOUT 2

Thisform.MiGrid.recordsource="NombredemiCursor" (Ya que pasó la tormenta del borrado reasignas el origen de datos del grid)
Thisform.MiGrid.Refresh()    (Y actualizas el grid para que refleje los cambios como lo hace la tecla F5 en el escritorio de windows o el boton actualizar en navegador web, o al menos esa es la idea jeje).

GO TOP (Para que vaya al primer registro del grid y se vean todos los datos, que claro, ya no existen jeje..)

Saludos!



Fox Learner

unread,
Jul 31, 2012, 10:18:40 AM7/31/12
to publice...@googlegroups.com
Claro donde seleccionas la tabla, debió haber sido generar la consulta, enviarla a un cursor y seleccionar el cursor..

Si.. ya sé.. Me equivoqué !! jeje    Saludos!

jorge carrasco diaz

unread,
May 7, 2020, 11:25:00 PM5/7/20
to Comunidad de Visual Foxpro en Español
Gracias Fox Learner..!
el detalle: "Quitas el origen de datos, para que el grid no se destruya al borrar"
me redujo muchas lineas y horas de trabajo..
Reply all
Reply to author
Forward
0 new messages