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>