Leyendo por allí un amigo me pasó la siguiente instrucción.
DECLARE Articulo SCROLL CURSOR FOR SELECT * FROM Articulo Order By Descrip,
Present
OPEN Articulo
FETCH First FROM Articulo
Esto me devuelve a mi aplicación un cursor con el contenido del primer
registro de la tabla Artículo.
Lo único que debo hacer ahora para navegar el cursor es ejecutar alguna de
las siguientes instrucciones y listo. Navegar
el cursor con esto se hace fácil.
FETCH First FROM Articulo // Me devuelve el primer registro de la tabla
según el orden estab.
FETCH Last FROM Articulo // Me devuelve el último registro de la tabla
según el orden estab.
FETCH Prior FROM Articulo // Me devuelve el anterior registro al actual de
la tabla según el orden estab.
FETCH Next FROM Articulo // Me devuelve el próximo registro al actual de la
tabla según el orden estab.
Esto me devuelve a mi aplicación un cursor con el contenido del primer
registro de la tabla Artículo.
Ahora va mi preg. como logro posicionarme en un Registro en particular y
continuar teniendo la característica tan útil de navegación de un registro.
A lo que voy:
En un ABM de artículos con esto navegaría uno a uno todos los registros,
pero si quisiera ir al Artículo con el Código 2000 y de alli subir o
bajar navegando
no puedo puesto que:
DEALLOCATE Articulo
DECLARE Articulo SCROLL CURSOR FOR SELECT * FROM Articulo WHERE CODINT =
2000 Order By Descrip, Present
OPEN Articulo
FETCH First FROM Articulo
Cualquier otro instrucción que coloque me devuelve un cursor vacío.
También leí que se puede con FETCH devolver un registro en particular.
DEALLOCATE Articulo
DECLARE Articulo SCROLL CURSOR FOR SELECT * FROM Articulo Order By
Descrip, Present
OPEN Articulo
FETCH ABSOLUTE 4 FROM Articulo
Esto me posicina en el Registro Nº 4 de la tabla. El número de registro
varía de acuerdo al orden.
Esto solucionaría mi problema pero no se como OBTENER ese NÚMERO de
REGISTRO en éste caso el 4.
En Visual Foxpro hay una función que te devuelve el número de registro
físico la cual se llama RECNO(),
el valor devuelto por ésta es siempre el mismo sin importar el orden.
Si yo hago: SELECT *, RECNO() AS RECNO FROM ARTICULO Se puede hacer algo
similar con SQL Server.
Desde ya gracias.
Fabián.
Leer las respuestas