Busqueda de registro en paginación

02/07/2003 - 12:51 por Barrish | Informe spam
Hola a todos,

Estoy utilizando VB.NET y realizo una carga de registros mediante
paginación.

Realizo una opción para poder buscar un registro en concreto. El problema es
que no sé como implementar la búsqueda de ese registro, ya que no sé
exactamente en qué página y posición se encuentra.

Es decir, no quiero que sólo me muestre ese registro, sino que se posicione
en el registro en concreto.

No sé si existe alguna opción para devolver el número de fila que ocupa el
registro en la base de datos y si ésta es la mejor opción.

Espero haberme explicado.
Gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
02/07/2003 - 13:05 | Informe spam
Es que depende de cómo hagas la paginación, por eso lo de "devolver el
número de fila que ocupa un registro" no es muy concreto. El registro
ocupará una posición dentro del conjunto de resultados que te envía el
servidor, por lo que si lo que haces es numerarlos (por ejemplo con una
tabla temporal que contenga una columna IDENTITY), siempre podrás
posicionarte directamente en uno a partir de este identificador.



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Barrish" escribió en el mensaje
news:
Hola a todos,

Estoy utilizando VB.NET y realizo una carga de registros mediante
paginación.

Realizo una opción para poder buscar un registro en concreto. El problema


es
que no sé como implementar la búsqueda de ese registro, ya que no sé
exactamente en qué página y posición se encuentra.

Es decir, no quiero que sólo me muestre ese registro, sino que se


posicione
en el registro en concreto.

No sé si existe alguna opción para devolver el número de fila que ocupa el
registro en la base de datos y si ésta es la mejor opción.

Espero haberme explicado.
Gracias y un saludo.




Respuesta Responder a este mensaje
#2 Barrish
02/07/2003 - 13:16 | Informe spam
Lo que hago es, en un principio, cargar los últimos 50 registros en pantalla
y posicionarme en el último.
Si el usuario se desplaza hacia atrás hasta terminar con estos 50, carga los
50 anteriores y así, sucesivamente.

No sé muy bien, pero creo que el problema con IDENTITY es que si se borráran
registros la posición indicada no sería la correcta. Lo que intentaba buscar
era una propiedad que indicára en cada momento el número de registro de la
fila en la base de datos.

Gracias y un saludo


"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:

Es que depende de cómo hagas la paginación, por eso lo de "devolver el
número de fila que ocupa un registro" no es muy concreto. El registro
ocupará una posición dentro del conjunto de resultados que te envía el
servidor, por lo que si lo que haces es numerarlos (por ejemplo con una
tabla temporal que contenga una columna IDENTITY), siempre podrás
posicionarte directamente en uno a partir de este identificador.



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Barrish" escribió en el mensaje
news:
> Hola a todos,
>
> Estoy utilizando VB.NET y realizo una carga de registros mediante
> paginación.
>
> Realizo una opción para poder buscar un registro en concreto. El


problema
es
> que no sé como implementar la búsqueda de ese registro, ya que no sé
> exactamente en qué página y posición se encuentra.
>
> Es decir, no quiero que sólo me muestre ese registro, sino que se
posicione
> en el registro en concreto.
>
> No sé si existe alguna opción para devolver el número de fila que ocupa


el
> registro en la base de datos y si ésta es la mejor opción.
>
> Espero haberme explicado.
> Gracias y un saludo.
>
>
>
>


Respuesta Responder a este mensaje
#3 Carlos Sacristan
02/07/2003 - 13:33 | Informe spam
No me refería al identity de la tabla origen, sino al de la tabla que
generaras en el procedimiento de paginación. Es necesario por lo que te
comentaba antes: no existe la función que comentas porque en un conjunto (es
decir, una tabla), el orden como tal no existe, sino que tienes que
imponérselo tú

Si tú numeras (en una tabla temporal que recoja el resultado de la
select que realices) los registros (con un identity nuevo, no el de la tabla
origen), no tendrás problemas en posicionarte en el que quieras, pero el
"lugar" que ocupa en esa tabla dependerá de la ordenación que le impongas
(en este caso por el comentado identity)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Barrish" escribió en el mensaje
news:
Lo que hago es, en un principio, cargar los últimos 50 registros en


pantalla
y posicionarme en el último.
Si el usuario se desplaza hacia atrás hasta terminar con estos 50, carga


los
50 anteriores y así, sucesivamente.

No sé muy bien, pero creo que el problema con IDENTITY es que si se


borráran
registros la posición indicada no sería la correcta. Lo que intentaba


buscar
era una propiedad que indicára en cada momento el número de registro de la
fila en la base de datos.

Gracias y un saludo


"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:
>
> Es que depende de cómo hagas la paginación, por eso lo de "devolver


el
> número de fila que ocupa un registro" no es muy concreto. El registro
> ocupará una posición dentro del conjunto de resultados que te envía el
> servidor, por lo que si lo que haces es numerarlos (por ejemplo con una
> tabla temporal que contenga una columna IDENTITY), siempre podrás
> posicionarte directamente en uno a partir de este identificador.
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> (Guía de netiquette del foro)
> http://www.helpdna.net/bosqlfaq00.htm
> http://perso.wanadoo.es/rubenvigon/foro
>
> (FAQ's de SQL Server)
> http://support.microsoft.com/defaul.../70faq.asp
> http://www.helpdna.net/bosqlfaq.htm
>
> "Barrish" escribió en el mensaje
> news:
> > Hola a todos,
> >
> > Estoy utilizando VB.NET y realizo una carga de registros mediante
> > paginación.
> >
> > Realizo una opción para poder buscar un registro en concreto. El
problema
> es
> > que no sé como implementar la búsqueda de ese registro, ya que no sé
> > exactamente en qué página y posición se encuentra.
> >
> > Es decir, no quiero que sólo me muestre ese registro, sino que se
> posicione
> > en el registro en concreto.
> >
> > No sé si existe alguna opción para devolver el número de fila que


ocupa
el
> > registro en la base de datos y si ésta es la mejor opción.
> >
> > Espero haberme explicado.
> > Gracias y un saludo.
> >
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Barrish
02/07/2003 - 15:28 | Informe spam
Ok No te había entendido.
Lo voy a probar. :-)

Muchas gracias de nuevo Carlos, un saludo.
Respuesta Responder a este mensaje
#5 Javier Loria\(MVP\)
02/07/2003 - 16:35 | Informe spam
Hola:
Yo uso el siguiente procedimiento:
/* Paginacion de Autores */
CREATE PROCEDURE Autores_Sel
@LastNombre varchar(40) = NULL OUTPUT
AS
SET NOCOUNT ON

SELECT TOP 5 WITH TIES *
FROM AUTHORS
WHERE CASE WHEN @LastNombre IS NULL THEN 1
WHEN @LastNombre<au_fname THEN 1
ELSE 0
END=1
ORDER BY AU_FNAME
SELECT @LastNombre=MAX(AU_FNAME)
FROM ( SELECT TOP 5 au_fname
FROM AUTHORS
WHERE CASE WHEN @LastNombre IS NULL THEN 1
WHEN @LastNombre<au_fname THEN 1
ELSE 0
END=1
ORDER BY AU_FNAME) AS N
GO
/* Fin de Declaracion de Procedimiento */

/* Uso de Procedimiento */
DECLARE @UltimoApellido varchar(40)

EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
/* Fin de Procedimiento */

Esto te permitira en la aplicacion cliente pedir bloques de filas
"consecutivos", usando el filtro y la siguiente corrida obtiene los
siguientes.

Espero te sirva,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
"Barrish" wrote in message
news:
Lo que hago es, en un principio, cargar los últimos 50 registros en


pantalla
y posicionarme en el último.
Si el usuario se desplaza hacia atrás hasta terminar con estos 50, carga


los
50 anteriores y así, sucesivamente.

No sé muy bien, pero creo que el problema con IDENTITY es que si se


borráran
registros la posición indicada no sería la correcta. Lo que intentaba


buscar
era una propiedad que indicára en cada momento el número de registro de la
fila en la base de datos.

Gracias y un saludo


"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:
>
> Es que depende de cómo hagas la paginación, por eso lo de "devolver


el
> número de fila que ocupa un registro" no es muy concreto. El registro
> ocupará una posición dentro del conjunto de resultados que te envía el
> servidor, por lo que si lo que haces es numerarlos (por ejemplo con una
> tabla temporal que contenga una columna IDENTITY), siempre podrás
> posicionarte directamente en uno a partir de este identificador.
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> (Guía de netiquette del foro)
> http://www.helpdna.net/bosqlfaq00.htm
> http://perso.wanadoo.es/rubenvigon/foro
>
> (FAQ's de SQL Server)
> http://support.microsoft.com/defaul.../70faq.asp
> http://www.helpdna.net/bosqlfaq.htm
>
> "Barrish" escribió en el mensaje
> news:
> > Hola a todos,
> >
> > Estoy utilizando VB.NET y realizo una carga de registros mediante
> > paginación.
> >
> > Realizo una opción para poder buscar un registro en concreto. El
problema
> es
> > que no sé como implementar la búsqueda de ese registro, ya que no sé
> > exactamente en qué página y posición se encuentra.
> >
> > Es decir, no quiero que sólo me muestre ese registro, sino que se
> posicione
> > en el registro en concreto.
> >
> > No sé si existe alguna opción para devolver el número de fila que


ocupa
el
> > registro en la base de datos y si ésta es la mejor opción.
> >
> > Espero haberme explicado.
> > Gracias y un saludo.
> >
> >
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida