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

Paginación de Registros

Estas en el tema de Paginación de Registros en el foro de ASP Clásico en Foros del Web. Ante todo saludos desde España. Llevo como cuatro horas delante del ordenador para conseguir que el código de la paginación de registros me funcione y ...
  #1 (permalink)  
Antiguo 01/04/2004, 04:05
 
Fecha de Ingreso: abril-2004
Mensajes: 2
Antigüedad: 20 años, 2 meses
Puntos: 0
Paginación de Registros

Ante todo saludos desde España. Llevo como cuatro horas delante del ordenador para conseguir que el código de la paginación de registros me funcione y siempre me da el mismo error por más que cambio y cambio el código. Aquí les dejo el código que estoy utilizando y el error que me da.

<html>
<head>
<title>Repaginador de resultados</title>
</head>
<%
sSQL="SELECT nombre,fecha,mensaje FROM Mensajes"
'esta sentencia SQL puede ser creada a partir de un buscador como el que hemos visto en otro reportaje
'y almacenada en una session para emplearla sucesivas veces en el script: session("ssql")=ssql

'actualizamos numero de pagina
If Request.QueryString("pag")<>"" Then
Session("pagina")=Request.QueryString("pag")
Else
Session("pagina")=1
End If

'constantes ADO VBScript
Const adCmdText = &H0001
Const adOpenStatic = 3

Set Conn = Server.CreateObject("ADODB.Connection")
Set Command = Server.CreateObject("ADODB.Command")
Set RS =Server.CreateObject("ADODB.RecordSet")
Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=C:\InetPub\wwwroot\CarlosASP\TablonAnuncios \Tablon.mdb;"
RS.Open sSQL,Conn,adopenstatic,adcmdtext

'resultados por pagina a elegir arbitrariamente
num_registros = 9

'Dimensionamos las paginas y determinamos la pagina actual
RS.PageSize=num_registros
RS.AbsolutePage=Session("pagina")
%>

<body>
<div align="center">
Número de página actual: <b><%=Session("pagina")%></b>
<br>
Número de páginas total: <b><%=RS.PageCount%></b>
<br>
Número de registros por página: <b><%=RS.PageSize%></b>
<br>
Número de registros seleccionados: <b><%=RS.RecordCount%></b>
</div>
<br><br>

<table cellspacing="2" cellpadding="2" border="1" align="center">
<%
'Contamos el numero de campos
num_campos=RS.Fields.Count
For campo=0 to num_campos-1%>
<td align="center"><%=RS(campo).Name%></td>
<%
Next
registros_mostrados = 0
While (Not RS.eof And registros_mostrados < num_registros)
registros_mostrados = registros_mostrados +1
%>
<tr>
<%For campo=0 to num_campos-1 %>
<td align="center"><%=RS(campo)%></td>
<%Next%>
</tr>
<%
RS.MoveNext
Wend
%>
<tr>
<td colspan="<%=num_campos%>" align="center">
<%
i=0
While i<RS.PageCount
i=i+1
%>
<b><a href="paginar.asp?pag=<%=i%>"><%=i%></a></b>
<%
Wend
%>
</td>
</tr>
</table>
<%
RS.Close
Conn.Close
%>
</body>
</html>

El error es el siguiente:

Tipo de error:
Microsoft JET Database Engine (0x80040E10)
No se han especificado valores para algunos de los parámetros requeridos.
/carlosasp/TMP1h2hivhlb4.asp, línea 25


Pero por más valores que le doy, el error sigue saliendo. Ya estoy completamente desesperado. A ver si ustedes me pueden echar una mano.

Atentamente: Un novato del ASP
  #2 (permalink)  
Antiguo 01/04/2004, 04:16
 
Fecha de Ingreso: abril-2004
Mensajes: 2
Antigüedad: 20 años, 2 meses
Puntos: 0
Me gustaría añadir que he estado revisando los FAQS y no he encontrado la solución a mi problema. Si aun así es posible encontrar ayuda allí les agradecería que me lo indicaran.

Gracias de antemano.
  #3 (permalink)  
Antiguo 01/04/2004, 17:00
Avatar de kalijunfan  
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 3 meses
Puntos: 0
Estimado goddemon, tu error está en la línea:

RS.Open sSQL,Conn,adopenstatic,adcmdtext

Te faltó especificar el tipo de bloqueo a utilizar para abrir el recordset después del tipo de cursor y antes del tipo de comando, o sea que debería ser así:

RS.Open sSQL,Conn,adopenstatic,adlockreadonly,adcmdtext

Teniendo en cuenta que cuando declaraste las constantes al principio del código donde dice:

'constantes ADO VBScript
Const adCmdText = &H0001
Const adOpenStatic = 3

Deberías agregar también:

Const adLockReadOnly = 1

Con eso se solucionaría tu error.
Probalo y después me contás.

  #4 (permalink)  
Antiguo 14/05/2007, 15:38
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Paginación de Registros

Tengo el siguiente problema, estoy empezando con ADO y el uso de recordcount; pero siempre me sale -1

He cambiado el tipo de cursor pero aun asi me sale el valor anterior.

Mi codigo es el siguiente:

<%Set mirecordset = Server.CreateObject("ADODB.Recordset")
mirecordset.ActiveConnection = conE1
mirecordset.Source = "Mantto_Pl_importestandares"
mirecordset.CursorType = adOpenKeyset
mirecordset.locktype=adLockOptimistic
mirecordset.Open
mirecordset.MoveFirst%>

<h3>
Tenemos <%= mirecordset.RecordCount%>
clientes registrados en nuestra base de datos
</h3>
<% ' mirecordset.Close
conE1.Close %>

De ante mano gracias por la ayuda

Yanelli carrillo
  #5 (permalink)  
Antiguo 14/05/2007, 16:25
Avatar de kalijunfan  
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Paginación de Registros

Pues a mí el RecordCount solamente me ha funcionado usando un tipo de cursor adOpenDynamic, en cualquier otro tipo de cursor me devolvía -1.
Podés probar con eso a ver si soluciona tu problema, y si no lo soluciona entonces deberías de chequear tu RecordSource, ese es otro posible error.
Espero que eso solucione tu problema.

Salu2
  #6 (permalink)  
Antiguo 15/05/2007, 15:15
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Paginación de Registros

Hola de nuevo:

Gracias por la respuesta, ya modifique el tipo de cursor pero sigue marcando -1, sin embargo si hago un recorrido a los registros de la tabla si me despliega dicha información.

Lo puedo checar de alguna otra forma?

Yanelli
  #7 (permalink)  
Antiguo 15/05/2007, 19:31
Avatar de kalijunfan  
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Paginación de Registros

Por supuesto, podés usar el método GetRows del objeto Recordset que te devuelve un array bidireccional con todos los valores de los campos y registros de tu consulta.
Por ej:

Registros = MiRecordset.GetRows

Podés saber cuantos registros tenés simplemente usando:

CantidadRegistros = UBound(Registros, 2) + 1

Porqué UBound(Registros, 2)?
Porque en el array 1 (o sea UBound(Registros, 1)) obtenés los campos y no los registros de la consulta.

Te recomiendo FERVIENTEMENTE que utilices GetRows para paginar tus registros. Si bien puede resultar más difícil de aprender es impresionante la diferencia en performance que hay, con GetRows tus consultas son muchísimo más rápidas que con el método que estás usando y los visitantes a tu sitio te lo van a agradecer

Te dejo algunos enlaces con mayor información sobre GetRows para que veas

http://www.w3schools.com/ado/met_rs_getrows.asp
http://www.aspfacil.com/articulos/110201.asp
http://www.aspfacil.com/codigo/grpaginar.asp

Ahí tenés toda la información que necesites de GetRows y para poder paginar tus registros más eficientemente.

Espero que te sirva

Saludos
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 00:21.