Wenas maestros,
Tengo en mi web una pagina asp que se encarga de hacer la paginación de resultados que funciona perfectamente, pero es que no logro encontrar la manera de que si los resultados ocupan 20 paginas y modifico la 17, volver a esa página que acabo de modificar y no a la 1. Más que nada porque cara al usuario es una putada que por cada cambio que haga en la página 17 (o la que sea) le lleve de vuelta a la 1....
Sé que el código es largo, por eso veréis que lo he reducido al máximo para no aburriros demasiado. Desde ya GRACIAS
Código:
<%
'Le decimos al navegador que no guarde la página en la caché
Response.addHeader "pragma", "no-cache"
'de esta forma si hay un proxy de por medio la página no se almacenará en su caché por ser "Private"
'si fuese "Public" ésta sí que se almacenaría en la caché del proxy
Response.CacheControl = "Private"
'Indica que la página caduca, por lo que inutilizamos la caché del navegador obligando así al cliente
'a descargarla siempre del servidor
Response.Expires = 0
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
Dim mostrar 'cantidad de registros a mostrar por página
Dim cant_paginas 'cantidad de páginas que recibimos
Dim pagina_actual 'La página que mostramos
Dim registro_mostrado 'Contador utilizado para mostrar las páginas
Dim I 'Variable Loop
dim strsql 'Consulta sql
mostrar = 20 ' Pueden modificar este número para cambiar la cantidad de registros por página
' IF para saber que página mostrar
If Request.QueryString("page") = "" Then
pagina_actual = 1
Else
pagina_actual = CInt(Request.QueryString("page"))
End If
'Conexión con la BD
dim conex,reg,sql,usuario
set conex=server.CreateObject("ADODB.Connection")
set reg=server.CreateObject("ADODB.Recordset")
conex.ConnectionString="provider=microsoft.jet.oledb.4.0; data source=" & server.MapPath("Db\GESTIÓN PROVEEDORES.mdb")
conex.Open
usuario=session("id_usu")
sql="select * from [Lín_ compra] where [Nº documento]='" & session("cod_pedido") & "'"
reg.Open sql,conex,3,2
' Creamos el RecordSet y definimos la cantidad de registros a mostrar
reg.PageSize = mostrar
reg.CacheSize = mostrar
'contamos las páginas que se formaron con la variable mostrar.
cant_paginas = reg.PageCount
' Si el pedido de página cae fuera del rango,
' lo modificamos para que caiga dentro
If pagina_actual > cant_paginas Then pagina_actual = cant_paginas
If pagina_actual < 1 Then pagina_actual = 1
' Si la cantidad de páginas da 0 es que no hay registros... por eso este IF
If cant_paginas = 0 Then%>
<strong><%Response.Write(session("usu"))%><FONT face=Arial> </FONT></strong>
<%Response.Write("NO HAY LINEAS PARA ESTE PEDIDO")%>
<%Else
' Nos movemos a la página elegida
reg.AbsolutePage = pagina_actual
' Mostramos el dato de que página estamos...
%>
<FONT face=Arial><FONT>
<FONT SIZE="+1"><b><%Response.Write(session("usu"))%></b></FONT>
<FONT face=Arial><FONT>
<FONT SIZE="+1">Página <B><%= pagina_actual %></B> de <B><%= cant_paginas %></B></FONT>
<%
' Espacios
Response.Write "<BR><BR>" & vbCrLf
'iniciamos la tabla donde mostraremos todo%>
<a href="Ayuda_fecha_recepcion.asp" target="_blank">¿Necesita ayuda?</a>
<%Response.Write "<TABLE BORDER=""1"" width=""300"" bordercolor=""black"">" & vbCrLf%>
<tr bgcolor=red>
<th colspan=20><FONT face=Arial size=2><STRONG><FONT color=ivory>LINEAS DEL PEDIDO <%Response.Write(session("cod_pedido"))%></STRONG></FONT></FONT></th>
</tr><br>
<%' Mostramos los titulos de las columnas...
Response.Write vbTab & "<TR>" & vbCrLf
Response.Write "<TD><B><FONT face=Arial size=2 color=mediumblue>Nº PRODUCTO</td></font>"
.
.
bla bla bla
.
.
</FORM></td></font>"
Response.Write vbTab & "</TR>" & vbCrLf
' Hacemos el bucle mostrando los datos del registro
registro_mostrado = 0
Do While registro_mostrado < mostrar And Not reg.EOF
Response.Write vbTab & "<TR>" & vbCrLf
.
.
bla bla
.
.
Response.Write "<FORM METHOD=""POST"" ACTION=""Paginar_lineas_pedidos.asp"" ID=""form01"" NAME=""form01""><INPUT NAME=""Nueva_fecha_entrega"" onKeypress=""if(event.keyCode<47 || event.keyCode>57)event.returnValue=false;"" onKeyUp =""this.value=formateafecha(this.value);"" VALUE='" & reg.Fields("Fecha recepción") & "'><input type=""submit"" value='" & reg.Fields("Nº") & "' name=""cmd_guardar"">"
Response.Write "</TD>" & vbCrLf
Response.Write vbTab & vbTab & "<TD>"
'Este es un campo oculto en el que cargamos en nº de linea de un pedido con la finalidad de que si en un pedido hay
'dos lineas del mismo producto con cantidad a recibir diferentes asi las distinguimos (por el numero de linea) y
'asignamos valores a la correcta. Vease caso sagitron pc-13250 prod 5424013
Response.Write "<INPUT TYPE=""hidden"" NAME=""Numero_linea_pedido"" value='" & reg.Fields("Nº línea") & "'></FORM>"
Response.Write "</TD>" & vbCrLf
Response.Write vbTab & "</TR>" & vbCrLf
' Sumamos 1 a los mostrados
registro_mostrado = registro_mostrado + 1
' Nos movemos al próximo registro...
reg.MoveNext
Loop
'listo...
Response.Write "</TABLE>" & vbCrLf
End If
' Cerramos y limpiamos...
reg.Close
Set reg = Nothing
conex.Close
Set conex = Nothing
' Ahora mostramos los enlaces a las otras páginas con el resto de los registros...
If pagina_actual > 1 Then
%>
</FONT></FONT>
<A href="Paginar_lineas_pedidos.asp?eje=30&page=<%= pagina_actual - 1 %>" ><FONT
face=Arial>[<< Anterior]</FONT> </a>
<%
End If
' mostramos la paginacion por numeros de página
For I = 1 To cant_paginas
If I = pagina_actual Then
%>
<%= I %>
<%
Else
%>
<FONT face=Arial> </FONT>
<A href="Paginar_lineas_pedidos.asp?eje=30&page=<%= I %>" ><%= I %></a>
<%
End If
Next 'I
If pagina_actual < cant_paginas Then
%>
<A href="Paginar_lineas_pedidos.asp?eje=30&page=<%= pagina_actual + 1 %>" ><FONT
face=Arial>[Próximo >>]</FONT ></a>
<%
End If
'Fin...
%>
<form action="Paginar_lineas_pedidos.asp" method="post" name="form332" id="form332">
<p><input type="submit" value="VOLVER" name="cmd_volver"></p>
</form>
<%
if Request.Form("cmd_volver")="VOLVER" then
Response.Redirect("Pedidos_pendientes.asp")
end if
if Request.Form("cmd_confirmar_todo")="Confirmar todo" then
Response.Redirect("Guardar_todas_lineas.asp")
end if
if Request.Form("cmd_guardar")<>"" then
session("cod_seleccionado")=Request.Form("cmd_guardar").Item
session("guardar_fecha_recepcion")=Request.Form("Nueva_fecha_entrega").Item
session("num_lin_pedido")=Request.Form("Numero_linea_pedido").Item
Response.Redirect("Guardar_fecha_recepcion.asp")
end if
session("pag_actual")=pagina_actual
%>
</BODY>
</HTML>