Incluso si no cierro los cursores, y desde la ventana de comandos ejecuto GO 1, GO 2, GO 3, GO 4, GO 5, y GO 6, sólo cuando ejecuto GO 6 aparece el error "Registro fuera de rango".
Hola Víctor
El famoso problema de no usar el nofilter en la sentencia de select. También pasa con los campos que no obtienes en la sentencia, si consultas por ellos te retorna un valor!!!
A veces vfp para optimizar en vez de crear un nuevo cursor lo que hace es filtrar la tabla de origen y mostrarte solos los campos que pediste.
Muchísimos problemas nos trajo esto en su momento.
Saludos,
César
|
CURSOR CursorName [NOFILTER | READWRITE] |
Stores query results in a temporary cursor.
NOFILTER creates a cursor that can be used in subsequent queries.
READWRITE specifies that the temporary cursor is modifiable. If the source table or tables use auto-incrementing, the cursor created with READWRITE does not inherit those settings. You can create more than one structural index on a cursor using the READWRITE argument. |
The value RECCOUNT( ) returns isn't affected by SET DELETED and SET FILTER.
O sea, que retorna lo que haya físicamente en la tabla, sin importar qué filtros haya
Te entiendo perfectamente Víctor!!
Mas de una vez me quitó el sueño esto, y por más que esté aclarado en la ayuda es un detalle que se olvida fácilmente, en mi caso yo no me lo olvidaba al programar pero al supervisar código de otros compañeros del equipo ni me daba cuenta de ese detalle... Y después las consecuencias jaja
Por eso cuando creamos nuestra capa de datos estos problemas se solucionaron de raíz.
Saludos,
César
Jaja te equivocaste de pastillita Ricardo!
Mira creo que VFP OPTIMIZA en base al entorno donde se ejecuta así que es posible que en tu caso sí genere un cursor temporal.
Saludos,
César