he visto que muchos tiene problemas al paginar los resultados de una consulta.
les comparto esta funcion que he realizado en mi tiempo libre. permite, entregandole los datos necesarios, paginar automaticamente los resultados utilizando getrows. realize algunas pruebas con y sin esta funcion y la demora es practicamente imperceptible.
trate de hacer customizable la mayor parte del codigo para que pueden moldearla a su gusto (fuentes, tamaños, etc). es muy parecida a la usa FDW.
el codigo esta hecho a partir de la paginacion de aspfacil.com
http://www.aspfacil.com/codigo/verco...o=rspagina.asp
y que en general casi todos usamos aca.
cualquier duda o mejora es bienvenida.
para llamarlo lo usan asi
link_paginas paginaActual, paginastotales, "demo.asp", parametros, registros, "usuarios encontrados"
Código:
SUB LINK_PAGINAS(paginaactual, paginastotales, nombre_pagina, parametros, registros, titulo)
'#############################################################
' paginaactual = Corresponde a la pagina en que se encuentra posicionado actualmente
' paginastotales = Numero total de paginas devueltas
' Pagina_web = nombre de la pagina paginada ej. paginacion.asp
' Parametros = parametros que queremos agregar en los vinculos de las paginas
' registros = numero total de registros encontrados
' Titulo = Titulo para la paginacion ej. "usuarios encontrados"
' ancho_tabla = Ancho de la tabla
' ancho_celda = ancho de las celdas. recomendable 20
' numero_de_hojas = corresponde al numero de hojas que se veran en pantalla.
'recomiendo utilizar numero impares y entre 5 y 10.
' fuente_numeros = fuente de los numeros
' fuente_titulo = fuente del titulo
' size_titulo = tamaño de la fuente del titulo
' imagen_hojas = ruta para la imagen de las hojas. dejar en blanco si no se va utilizar
' fondo_celda_activa = ruta para imagen o color de la celda activa.
' ej. para color "bgcolor=""red"""
' ej. para una imagen de fondo "background=""fondo.jpg"""
' size_numero = tamaño del numero de pagina
' size_ant_sig = Tamaño del vinculo anterior y siguiente
' fuente_ant_sig = Fuente del vinculo anterior y siguiente
' caracter_anterior = caracter que representa un vinculo a la pagina anterior
' caracter_siguiente = caracter que representa un vinculo a la pagina siguiente
' caracter_primero = caracter que representa un vinculo a la primera pagina
' caracter_ultimo = caracter que representa un vinculo a la ultima pagina
'#############################################################
'seccion editable
ancho_tabla="100%"
ancho_celda=20
numero_de_hojas=7
fuente_numeros="Tahoma, Arial, Verdana"
fuente_titulo="arial"
size_titulo=1
imagen_hojas=""
fondo_celda_activa="bgcolor=""yellow"""
size_numero=1
size_ant_sig=1
fuente_ant_sig="arial"
caracter_anterior="<"
caracter_siguiente=">"
caracter_primero="<<"
caracter_ultimo=">>"%>
<style>
.Td_subrayado {//rayado cuadrado
border-top: 1px;
border-left: 1px;
border-right: 1px;
border: 1px solid;
}
</style>
<%
'############################################################
if len(parametros)>=1 then parametros=parametros+"&"
%>
<table align="center" border="0" width="<%=ancho%>" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr>
<td align="right"><font face="<%=fuente_titulo%>" size="<%=size_titulo%>"><%=registros%> <%=titulo%> Pág. <%=paginaactual%> de <%=paginastotales%> </font></td>
<td width="20" align="center"><%=imagen_hojas%></td><%
if paginastotales>1 then
if paginastotales>numero_de_hojas then
if paginaactual<=numero_de_hojas then
for i=1 to numero_de_hojas
if paginaactual=i then%>
<td width="<%=ancho_celda%>" align="center" <%=fondo_celda_activa%> class="td_subrayado">
<font size="<%=size_numero%>" face="<%=fuente_numeros%>"><b><%=paginaactual%></b></font></td><%
else%>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=i%>">
<font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=i%></font></a></td><%
end if
next%>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado">
<a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual+1%>" title="Pagina Siguiente (<%=paginaactual+1%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_siguiente%></b></font></a></td>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginastotales%>" title="Ultima Pagina (<%=paginastotales%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_ultimo%></b></font></a></td><%
else
'estamos en medio de la paginacion
if paginaactual+numero_de_hojas<=paginastotales then%>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado" valign="middle"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=1" title="Primera Pagina (1)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_primero%></b></font></a></td>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado" valign="middle"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual-1%>" title="Pagina Anterior (<%=paginaactual-1%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_anterior%></b></font></a></td>
<%
f=int(numero_de_hojas/2)
j=0
for i=paginaactual-(f) to paginaactual+(f)
if paginaactual=i then%>
<td width="<%=ancho_celda%>" align="center" <%=fondo_celda_activa%> class="td_subrayado" valign="middle"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><b><%=i%></b></font></td><%
else%>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado" valign="middle"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual-f+j%>"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=i%></font></a></td><%
end if
j=j+1
next%>
<td width="<%=ancho_celda%>" valign="middle" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual+1%>" title="Pagina Siguiente (<%=paginaactual+1%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_siguiente%></b></font></a></td>
<td width="<%=ancho_celda%>" valign="middle" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginastotales%>" title="Ultima Pagina (<%=paginastotales%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_ultimo%></b></font></a></td><%
else
' parte final de la paginacion%>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=1" title="Primera Pagina (1)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_primero%></b></font></a></td>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual-1%>" title="Pagina Anterior (<%=paginaactual-1%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_anterior%></b></font></a></td><%
for i=((paginastotales+1)-numero_de_hojas) to paginastotales
if i<>0 then
if paginaactual=i then%>
<td width="<%=ancho_celda%>" align="center" <%=fondo_celda_activa%> class="td_subrayado"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><b><%=i%></b></font></td><%
else%>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=i%>"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=i%></font></a></td><%
end if
end if
next
end if
end if
else
' paginas totales es menor a numero_de_hojas
for i=1 to paginastotales
if paginaactual=i then%>
<td width="<%=ancho_celda%>" align="center" <%=fondo_celda_activa%> class="td_subrayado"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=paginaactual%></font></td><%
else%>
<td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=i%>"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=i%></font></a></td><%
end if
next
end if
end if%>
</tr>
</table>
<%END SUB
%>