Foros del Web » Programando para Internet » ASP Clásico »

Paginación de resultadode una busqueda selectiva

Estas en el tema de Paginación de resultadode una busqueda selectiva en el foro de ASP Clásico en Foros del Web. Hola a todos. ESpero su ayuda. Tengo un problema con la paginación resultados de una búsqueda selectiva. Al Inicio la búsqueda y la paginación seon ...
  #1 (permalink)  
Antiguo 11/01/2005, 07:29
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 20 años, 4 meses
Puntos: 0
Paginación de resultadode una busqueda selectiva

Hola a todos.
ESpero su ayuda. Tengo un problema con la paginación resultados de una búsqueda selectiva.
Al Inicio la búsqueda y la paginación seon correctos, pero al dar click en pagina "dos" o "siguiente" el resultado que me muestra ya no es de la búsqueda selectiva sino de toda la base de datos.

Usé el siguiente código:
-------------------------
<%
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

mostrar = 10 ' 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

strsql = "Select * From cqfp Where UCase(DPTO) like '%" & UCase(Request("depto3")) & "%' ORDER BY cqfp.ApPaterno"

' Creamos la conexion a la base de datos
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & "Dbq=" & Server.MapPath("../../db/bdcqfp.mdb")

' Creamos el RecordSet y definimos la cantidad de registros a mostrar
Set RS = Server.CreateObject("ADODB.Recordset")
RS.PageSize = mostrar
RS.CacheSize = mostrar

' Abrimos la tabla...
RS.Open strSQL, oConn,3,1
'contamos las páginas que se formaron con la variable mostrar.
cant_paginas = RS.PageCount

' Si el pedido de página cae afuera del rango,
' lo modificamos para que caiga adentro
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
Response.Write "No hay registros..."
Else
' Nos movemos a la página elegida
RS.AbsolutePage = pagina_actual
' Mostramos el dato de que página estamos...
%>
<FONT SIZE="+1">Page <B><%= pagina_actual %></B> of <B><%= cant_paginas %></B></FONT>
<%
' Espacios
Response.Write "<BR><BR>" & vbCrLf
'iniciamos la tabla donde mostraremos todo
Response.Write "<TABLE BORDER=""1"">" & vbCrLf
' Mostramos los titulos de las columnas... (pueden sacar ese FOR para eliminar eso)
Response.Write vbTab & "<TR>" & vbCrLf
For I = 0 To RS.Fields.Count - 1
Response.Write vbTab & vbTab & "<TD><B>"
Response.Write RS.Fields(I).Name
Response.Write "<B></TD>" & vbCrLf
Next 'I
Response.Write vbTab & "</TR>" & vbCrLf

' Hacemos el bucle mostrando los datos del registro
registro_mostrado = 0
Do While registro_mostrado < mostrar And Not RS.EOF
Response.Write vbTab & "<TR>" & vbCrLf
For I = 0 To RS.Fields.Count - 1
Response.Write vbTab & vbTab & "<TD>"
Response.Write RS.Fields(I)
Response.Write "</TD>" & vbCrLf
Next 'I
Response.Write vbTab & "</TR>" & vbCrLf

' Sumamos 1 a los mostrados
registro_mostrado = registro_mostrado + 1
' Nos movemos al próximo registro...
RS.MoveNext
Loop

'listo...
Response.Write "</TABLE>" & vbCrLf
End If

' Cerramos y limpiamos...
RS.Close
Set RS = Nothing
oConn.Close
Set oConn = Nothing

' Ahora mostramos los enlaces a las otras páginas con el resto de los registros...
If pagina_actual > 1 Then
%>
<a href="resultadoDeptoGral.asp?eje=30&page=<%= pagina_actual - 1 %>">[<< Anterior]</a>
<%
End If

' mostramos la paginacion por numeros de página
For I = 1 To cant_paginas
If I = pagina_actual Then
%>
<%= I %>
<%
Else
%>
<a href="resultadoDeptoGral.asp?eje=30&page=<%= I %>"><%= I %></a>
<%
End If
Next 'I

If pagina_actual < cant_paginas Then
%>
<a href="resultadoDeptoGral.asp?eje=30&page=<%= pagina_actual + 1 %> ">[Próximo >>]</a>
<%
End If
'Fin...
%>
-------------------------------

Mi problema está en cómo mantener el critrio de búsqueda en los enlaces para pasar de página en página. Intenté con los ejemplos y respuestas dadas en este foro, pero no logré hacerlos funcionar.

Estaré esperando su pronta respuesta.
  #2 (permalink)  
Antiguo 11/01/2005, 08:03
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
la primera vez que se arme la página, crea una variable de session con la consulta sql
  #3 (permalink)  
Antiguo 11/01/2005, 10:11
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 20 años, 4 meses
Puntos: 0
Gracias por la respuesta, por favor, me podrias explicar un opco más, soy aun principiante en esto.
Gracisa.
  #4 (permalink)  
Antiguo 11/01/2005, 10:16
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 20 años, 4 meses
Puntos: 1
codigo que funciona, salvo que no del todo

utiliza este codigo teniendo en cuenta tus datos...

<html>
<head><title>Paginar resultados de consulta</title></head>


<%
DNI = Request.Form("DNI")

'Conexion a tu base de datos
StrConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("database/userREG.mdb")

SQL="SELECT DNI, CGarantia, Cliente, DirCliente, TelCliente, Fecha FROM userVENTA Where DNI='" & DNI & "'"

'Configurar aqui los registros por página
num_registros = 5

'actualizamos la pagina actual
if (request.queryString("pag") <> "") then
pagina_actual = request.queryString("pag")
else
pagina_actual = 1
end if

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open StrConn
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open sql,oConn,3,1

if rs.EOF then
response.redirect("errorBASE.asp")
end if

RS.pageSize = num_registros
RS.absolutePage = pagina_actual
cantidad_campos = RS.Fields.Count
%>

<body>
<div align="center">
Página actual: <%= pagina_actual %><br>
Cantidad de páginas: <%= RS.PageCount %><br>
Registros por página: <%= RS.PageSize %><br>
Registros totales: <%= RS.RecordCount %>
</div>
<br>


<table cellspacing="2" cellpadding="2" border="1" align="center">
<tr>
<%
For campo = 0 to cantidad_campos - 1 %>
<td align="center"><%=RS(campo).Name%></td>
<% Next %>
</tr>
<%
registros_mostrados = 0
While (Not RS.eof And registros_mostrados < num_registros)
registros_mostrados = registros_mostrados +1
%>
<tr>
<%For campo=0 to cantidad_campos - 1 %>
<td align="center"><%=RS(campo)%></td>
<%Next%>
</tr>
<%
RS.MoveNext
Wend
%>


<tr>
<td colspan="<%=cantidad_campos%>" align="center">
<%
i=1
Do While i < RS.PageCount
%>
<a href="verBASE.asp?pag=<%=i%>"><%=i%></a>
<%
i=i+1
Loop
%>
</td>
</tr>
</table>

<%
'Limpiamos los objetos (SIEMPRE)
RS.Close
Set RS = Nothing
oConn.Close
Set oConn = Nothing
%>
</body></html>


sin embargo este codigo tiene un error: cuando el registro supera los datos por pagina, y supuestamente crea una pagina nueva... esta pagina "dos" no puede ser cargada en el server y no se pueden ver los registros que faltan... alguien tiene alguna idea a esto??? como se puede solucionar???

el error se ve aca tambien:

http://www.stilegno.com/ventas/protected.asp

en el pequeño form pongan 28910525

eso les dara un resultado... hay 8 registros, se muestran creo que 7... pero luego no puedo ver el que falta... :(
  #5 (permalink)  
Antiguo 11/01/2005, 10:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 20 años, 4 meses
Puntos: 1
y por cierto, tampoco entendi lo que dijo "edcala "
  #6 (permalink)  
Antiguo 11/01/2005, 10:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 20 años, 4 meses
Puntos: 0
Que parte debo explicarme mejor daenor, para dejarme entender mejor?
  #7 (permalink)  
Antiguo 11/01/2005, 11:02
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola daenor, nuevamente estoy aqui.
Usé el código que me diste, y tambien funciona al igual que el código que puese, pero solo hasta el punto de lo siguiente:
Hago una búsqueda en la base de datos para extraer los registros que cumplen una condición. Hasta alli bién. Por ejemplo me saca que hay 79 registros que cumplen esa condicion, y que paginados de 5 en 5, hay 16 páginas y me muestra los enlaces a las 16 páginas.
Al querer ingresar a la segunda página o cualquiera, ya no me da como resultado lo que deberia ser en esa pagina, sino que extrae de la base de datos todos los registro y la paginacion se vá hasta 1102 páginas.
La pregunta es, como hago para poder visualizar esa segunda página que al inicio me da y que cumple con el criterio de búsqueda.

Espero me haya explicado. Gracias.
  #8 (permalink)  
Antiguo 11/01/2005, 11:42
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 20 años, 4 meses
Puntos: 1
exactamente lo mismo pregunto :(
  #9 (permalink)  
Antiguo 12/01/2005, 05:43
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 20 años, 4 meses
Puntos: 0
Gracias por sus aportes, creo que alfin ya encontré la solución.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:47.