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

Paginar registros de MySQL en ASP

Estas en el tema de Paginar registros de MySQL en ASP en el foro de ASP Clásico en Foros del Web. Saludos Tengo unos problemitas a la hora de paginar registros de MySQL en ASP, les voy a comentar mi problema. A la hora de paginar ...
  #1 (permalink)  
Antiguo 15/03/2006, 10:44
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 20 años, 8 meses
Puntos: 0
Exclamación Paginar registros de MySQL en ASP

Saludos


Tengo unos problemitas a la hora de paginar registros de MySQL en ASP, les voy a comentar mi problema.

A la hora de paginar registros me da este error:

Código HTML:
Tipo de error:
ADODB.Recordset (0x800A0BB9)
Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros.
/envelope/paginar.asp, línea 63
y la linea de error es la siguiente:

Código:
rs.AbsolutePage=PaginaActual
La coneccion MySQL que uso es esta:

Código:
' Conexión por MySQL
oConn.Open("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=envelope;USER=root;PASSWORD=123111;OPTION=3;")
La conexion de Access es esta:

Código:
' Conexion por OLEDB
'oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("bd2.mdb")&";"
y si funciona la paginacion

Asi que aqui les mando el codigo completo, espero me den algun tip para corregir este error, ok.

Código:
<%@ Language = "VBScript" %>
<% Response.Buffer = True %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Paginar Registros</title>
</head>

<body>
<%

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

'cuantos resultados 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 MySQL
oConn.Open("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=envelope;USER=root;PASSWORD=123111;OPTION=3;")
' Conexion por OLEDB
'oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("bd2.mdb")&";"
SQL="SELECT Id, Style FROM Style;"

' Defino el tamaño de las páginas
rs.PageSize=TamPagina
rs.CacheSize=TamPagina

' 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

'Si no existen Fotografías devuelve este mensaje
if PaginasTotales=0 then

Response.Write("No se Encontraron Registros.")

else

'Escribiendo la pagina en HTML con ASP
rs.AbsolutePage=PaginaActual
Response.Write("Pagina " & PaginaActual & " de " & PaginasTotales)
Response.Write("<br><br>")
Response.Write("<TABLE BORDER=""0"" ALIGN=""center"" STYLE=""font-size:75%"">")
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.Fields("Style")&"</TD>")
Response.Write("<td>""<a href="""&rs.Fields("Style")&""">""<img border=""0"" src= """&rs.Fields("Style")&"-F.jpg"&"""width=""320"" height=""240""""</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

'Muestra los enlaces de a 10 Resultados
Response.Write("<hr>")
if PaginaActual > 1 then
Response.Write("<A HREF=paginar.asp?pagina="& PaginaActual-1& ">10 Anteriores</A>&nbsp;&nbsp;&nbsp;")
end if
if PaginaActual < PaginasTotales then
Response.Write("<A HREF=paginar.asp?pagina=" & PaginaActual+1 &">10 Siguientes</A>")
end if


%>

</body>
</html>
  #2 (permalink)  
Antiguo 04/04/2006, 09:30
perrogrun
Invitado
 
Mensajes: n/a
Puntos:
La paginación en mysql es diferente a la paginación con access. Verás lo de absolutepage y todo eso no funciona con mysql al igual que el recordcount.

Mysql tiene su propida manera de paginar, verás tiene la opcion slq limit.

Te pongo un ejemplo de paginación con asp y mysql:

[QUOTE<%
pagina=request("pagina")
if pagina="" then
pagina="1"
end if
cadena="select * from accesorios where publicar=1 limit "&(pagina-1)*5 &",5"

'response.write cadena
cadena2 = cadena
rs.open cadena,conectar,3,1
If RS.EOF=false AND RS.BOF=false then
total = 0
cadena2="select * from accesorios"
rs2.open cadena2,conectar,1
while not rs2.eof
total= total+1
rs2.movenext
wend
rs2.close
paginas = int(total/5)+1
For p = 1 To paginas %>
<%Next%>
tu codigo
<%end if%>[/QUOTE]


Esto es más o menos lo fundamental
  #3 (permalink)  
Antiguo 26/05/2006, 16:30
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 20 años, 8 meses
Puntos: 0
estoy usando este codigo para paginar en MySql y asp pero no me funciona correctamente, alguien me puede ayudar

<body>
<br><%
'Conexion a tu base de datos
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=envelope;USER=ro ot;PASSWORD=123111;OPTION=3;")

pagina=request("pagina")
if pagina="" then
pagina="1"
end if
Cadena="select * from Production where Estado='ON' limit "&(pagina-1)*20 &",20"

Set RS = Conn.Execute(cadena)
If RS.EOF=false AND RS.BOF=false then
total = 0

cadena2="select * from production"
Set RS2 = Conn.Execute(cadena2)%>
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#669966"><span class="Estilo1">Account</span></td>
<td bgcolor="#669966" class="Estilo1">Customer</td>
<td bgcolor="#669966" class="Estilo1">PO</td>
<td bgcolor="#669966" class="Estilo1">Project</td>
</tr>
<%
while not rs.eof
total= total+1
registros=RS.RecordCount%>
<tr>
<td class="Estilo2"><%=RS("Account")%></td>
<td class="Estilo2"><%=RS("Customer")%></td>
<td class="Estilo2"><%=RS("PO")%></td>
<td class="Estilo2"><%=RS("Project")%></td>
</tr>
<%rs.movenext
wend%>
</table>
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#669966" class="Estilo1">Registros por p&aacute;gina: <%=Total%> - Ir a la página <a href="paginarmysql.asp?Pagina=<%=Total%>"><%=Total %></a> </td>
</tr>
</table><%rs.close
paginas = int(total/5)+1
For p = 1 To paginas
%>
<%Next%><br>
<br>
<%end if%>
<% Response.Write "ID Session = " & Session.SessionID %>
<br>
<%for each elemento in session.contents
response.write elemento & "= " & session.contents(elemento) & "<br />"
next%></body>
__________________
México no es México sin su gente, y la democracia no es de algunas personas, es de todos. Hagamos valer nuestros derechos.
  #4 (permalink)  
Antiguo 30/07/2007, 09:19
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: Paginar registros de MySQL en ASP

lo solucionasets?
__________________
JuanRa Pérez
San Salvador, El Salvador
  #5 (permalink)  
Antiguo 22/08/2007, 08:25
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Paginar registros de MySQL en ASP

Hola a todos!!!, tengo un problema y espero que alguien pùeda darme una idea de como solucionarlo...

Estoy paginando unos resultados de una consulta a la base de datos, pero la pàgina donde realizo el listado recibe datos de un formulario por medio del (request) de otra pàgina, esos datos los empleo en como paràmetros en la consulta SQL, la primera pàginame la muestra bien, pero cuando preciono los vinculos de "siguiente", "ùltimo", entre otros me arroja un error...

He probado la pàginaciòn en una pàgina que no recibe paràmetros por el request y funciona de lo mejor (todos los vìnculos), pero el problema es que cuando se llama a algùn vìnculo """"supongo""" que el objeto Request queda esperando los paràmetros que vienen del formulario, los cuales fueron pasados en una primera instancia y realizada la consulta, ahora lo que se quiere es pàginar todos los resultados de esa consulta pero no puedo!!!

Alguno tiene una(1) idea de que puedo hacer para solucionar esto????
  #6 (permalink)  
Antiguo 23/08/2007, 16:23
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: Paginar registros de MySQL en ASP

aqui esta
funcionando aun tengo algunos detalles con la paginacion pero bueno empezamos

Definimos cuantos registros mostrarmos y en que pagina estamos
Cita:
CantidadMostrada = request("paginarpor")
if CantidadMostrada = "" then
CantidadMostrada = 20
end if

pagina = request("pagina")
if pagina = "" then
pagina = 1
else
pagina = cInt(request("pagina"))
end if
Hacemos nuestra primer SQL
Cita:
cadena = "SELECT * FROM tutabla where NombreCompleto like '%"& nombreabuscar &"%' order by NombreCompleto ASC "
cadena = cadena & " limit "&(pagina-1) * CantidadMostrada &", " & CantidadMostrada &" "
en donde: (pagina-1) * CantidadMostrada = a si estamos en la pagina 5 le quitamos uno y nos queda 4, eso lo multiplicamos por 20 (que para el ejemplo es la cantidad a mostrar.

eso quire decir que cuando estemos en la pagina 5 el sql quedaria asi:
limit 80, 20 (eso quire seleccione todos desde el registro 80, hasta 20 mas (o sea 100 como registro limite - si me equivoco es que ando fumado)

luego
Cita:
Set RS = Server.CreateObject("ADODB.Recordset")
rs.open cadena,oConnConexionPrincipal
If RS.EOF = false AND RS.BOF = false then
Hacemos nuestra segunda SQL
En esta SQL extraemos todos los registros sin poner limite que cumplan con las mimas condiciones de la consulta anteior (todos los where se dejan igual solo se quita el limite)
Cita:
cadena2 = "SELECT * FROM tutabla where NombreCompleto like '%"& nombreabuscar &"%' order by NombreCompleto ASC "
Obtenemos el total de paginas
Cita:
Set RS2 = Server.CreateObject("ADODB.Recordset")
rs2.open cadena2,oConnConexionPrincipal
total = 0
while not rs2.eof
total = total + 1
rs2.movenext
wend
paginas = int( Total / CantidadMostrada ) + 1
hasta ahi lo interesante luego hacemos el recorrido
Cita:
while not rs.eof
'imprimimos registros de nuestra priemr consulta (ojo es el RS no el RS2)
rs.movenext
wend
rs.close
imprimo los numeros de páginas
ojo, si mandas otras variables en este enlace tienes que poner todas las otras variables necesarias para la paginacion
Cita:
<p align="left">
<%For p = 1 To paginas%>
<a href="<%=mipaginacion.asp?pagina=<%= P %>"><%= P %>
</a> |
<%Next%>
</p>

Espero haber sido explicativo si no lo fui lo siento :(

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador

Última edición por JuanRAPerez; 23/08/2007 a las 16:30
  #7 (permalink)  
Antiguo 27/08/2007, 06:46
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Paginar registros de MySQL en ASP

Hola!!! ya he solucionado el problema!!! he metido los paràmetros en variables de sessiòn y lo he pasado en un formulario por campos acultos cada vez que llamo el listado!!! to me ha funcionado bien!!!

sì algien necesita la soluciòn que me han ayudado a encontrar favos mandar uh correo a: [email protected] y le respondo con las clases que utilizo!!!


gracias a todos por la ayuda!!!
  #8 (permalink)  
Antiguo 28/08/2007, 11:19
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: Paginar registros de MySQL en ASP

publicalo de un solo, asi sale mas facil

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #9 (permalink)  
Antiguo 10/07/2008, 10:03
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Paginar registros de MySQL en ASP

Aquí va una paginación que usé para http://www.viajerus.com
La página a crear se llama listado4. He usado usuario y servidor inventado claro.
Abajo hay una parte que tiene las páginas numeradas Anterior y Siguiente.
Estan paginados de 5 en 5 los registros.
Suerte gente!

Última edición por Majaus; 04/10/2008 a las 11:50
  #10 (permalink)  
Antiguo 23/12/2008, 13:38
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 21 años, 9 meses
Puntos: 0
Respuesta: Re: Paginar registros de MySQL en ASP

exelente JuanRAPerez, yo solo le cambiaría esto

paginas = int( Total / CantidadMostrada ) + 1

por esto

if (Total mod CantidadMostrada) = 0 then Total = int(Total / CantidadMostrada) else cant_paginas = int(Total / CantidadMostrada) + 1

de lo contrario cuando los regstros entran justo en la cantidad de paginas te da una pagina más.
Muchas gracias por tu aporte
  #11 (permalink)  
Antiguo 23/12/2008, 14:02
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Paginar registros de MySQL en ASP

gracias hahaha creo que no había visto ese detalle


gracias :)
__________________
JuanRa Pérez
San Salvador, El Salvador
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 16:47.