
17/02/2003, 10:03
|
 | | | Fecha de Ingreso: junio-2002 Ubicación: Valencia
Mensajes: 734
Antigüedad: 22 años, 10 meses Puntos: 2 | |
De nuevo: paginación A ver... tengo dos páginas web. En una tengo un formulario de consulta (consufh.htm) y en otra una página asp que me pagina los resultados (fhfrase.asp). El código de esta última es que viene más abajo.
frase=request.form("frase") es la variable que recoge de la página de consulta. El código parece estar bien, NO DA ERROR, el problema es que la primera páginación da los resultados bien, pero cuando pulso en la segunda página de la paginación, parece que "olvida" la consulta (como si perdiera el valor de la variable) y me saca todos los registros. Alguien me puede decir cómo modificar el código para que funcione bien.
Gracias.
<HTML>
<HEAD>
<TITLE>Paginar un recordset</TITLE>
<%
Response.Write("<CENTER><H2>Paginando un recordset</H2></CENTER>")
Dim oConn, rs, SQL
Dim PaginaActual ' en qué pagina estamos
Dim PaginasTotales ' cuántas páginas tenemos
Dim TamPagina ' cuantos registros por pagina
Dim CuantosRegistros ' para imprimir solo el nº de registro por pagina que queramos
'MODIFICAR AQUI PARA CAMBIAR EL Nº DE REGISTRO POR PAGINA
TamPagina=10
'Leemos qué página mostrar. La primera vez será la inicial
if Request.Querystring("pagina")="" then
PaginaActual=1
else
PaginaActual=CInt(Request.Querystring("pagina"))
end if
set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
' Conexión por OLEDB
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("FH.mdb")
frase=request.form("frase")
SQL="SELECT * FROM fh4 where frase like '%" & frase & "%' ; "
' Defino el tamaño de las páginas
rs.PageSize=TamPagina
rs.CacheSize=TamPagina
' Defino el cursor en el cliente: adUseClient
rs.CursorLocation = 3
' Abro el recordset
rs.Open SQL, oConn, 1, 2
'Cuento las páginas
PaginasTotales=rs.PageCount
'Compruebo que la pagina actual está en el rango
if PaginaActual < 1 then
PaginaActual = 1
end if
if PaginaActual > PaginasTotales then
PaginaActual = PaginasTotales
end if
'Por si la consulta no devuelve registros!
if PaginasTotales=0 then
Response.Write("No se encontraron resultados.")
else
'Vamos a paginar
rs.AbsolutePage=PaginaActual
Response.Write("Pagina " & PaginaActual & " de " & PaginasTotales)
Response.Write("<br><br>")
Response.Write("<TABLE BORDER=""1"" ALIGN=""center"">")
Response.Write("<TR><TD COLSPAN=""3""><B>RESULTADOS</B></TD>")
CuantosRegistros=0
do while not rs.EOF and CuantosRegistros < TamPagina
'Pinto una línea de la tabla por cada registro
Response.Write("<TR>"&VbCrLf)
Response.Write("<TD>"&rs("frase")&"</TD>")
Response.Write("<TD>"&rs("autor")&"</TD>")
Response.Write("<TD>"&rs("tema")&"</TD>")
Response.Write("</TR>")
CuantosRegistros=CuantosRegistros+1
rs.MoveNext
loop
Response.Write("</TABLE>")
end if
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing
'Muestro los enlaces
Response.Write("<hr>")
if PaginaActual > 1 then
Response.Write("<A HREF=fhfrase.asp?pagina=" & PaginaActual-1& ">10 Anteriores</A> ")
end if
if PaginaActual < PaginasTotales then
Response.Write("<A HREF=fhfrase.asp?pagina=" & PaginaActual+1 &">10 Siguientes</A>")
end if
%> |