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

Error en paginación

Estas en el tema de Error en paginación en el foro de ASP Clásico en Foros del Web. Buenas noches: Es mi primer post y nada que me presento para dar y recibir ayuditas He usado este código y me da este error: ...
  #1 (permalink)  
Antiguo 05/12/2005, 19:13
 
Fecha de Ingreso: diciembre-2005
Mensajes: 8
Antigüedad: 18 años, 6 meses
Puntos: 0
Error en paginación

Buenas noches:

Es mi primer post y nada que me presento para dar y recibir ayuditas

He usado este código y me da este error:

Tipo de error:
ADODB.Recordset (0x800A0BB9)
Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros.
/musica/autor.asp, línea 63

..................................

Tengo una bd llamada música y accedo desde musica.asp a varias opciones: autor, título, formato, duración...
El caso es que si elimino:where autor=('" & Replace(xx, "'", "''") & "')en la sql CONSULTA funciona bien pero claro, sin filtrar por el autor. Y ahí es donde mestoy volviendo majara.
..................................

<%@language="vbscript"%>
<%option explicit%>
<!--#include file="include\adovbs.inc"-->
<html>

<!-- recibimos del formulario la dirección del movimiento y
lo guardamos en una variable de sesión para este usuario -->

<%


dim xx,inicio,fin,conexion,rs,consulta,valor,contador

xx=request.form("autor")
if xx = "Atras" then
session("pagina")=session("pagina")-1

if session("pagina")< 1 then
session("pagina")=1 'evitamos el error por reload
end if

else
if xx="Adelante" then
session("pagina")=session("pagina")+1
else
session("pagina")=1 'primera pasada
end if
end if%>

<head>
<title>Paginación de registros</title>
</head>

<!-- Montamos la sentencia SQL con los campos a seleccionar -->

<%
consulta="SELECT Autor.Autor, Título.Título, Duración.Duración, Formato.Formato FROM Formato INNER JOIN (Duración INNER JOIN (Autor INNER JOIN Título ON Autor.IdAutor = Título.IdAutor) ON Duración.IdDuración = Título.IdDuración) ON Formato.IdFormato = Título.IdFormato where autor=('" & Replace(xx, "'", "''") & "')"
%>


<body>

<!-- Creamos el objeto recordset y le asignamos un tipo de cursor
que nos permita movernos por el y asignarle tamaños de pagina -->

<%set rs = CreateObject("ADODB.Recordset")
rs.CursorType = adOpenstatic %>

<!-- abrimos el recordset con la sentencia SQL sobre nuestra base
ODBC y le asignamos el tamaño de página -->

<%rs.Open consulta, "DSN=Musica"
rs.pagesize=10

if session("pagina")>rs.pagecount then
session("pagina")=rs.pagecount 'evitamos el error de reload
end if

rem <!-- situamos el cursor en el inicio de la pagina a mostrar y
rem calculamos los valores de inicio y fin para mostrarlos en
rem las cabeceras -->

rs.absolutepage=session("pagina")
inicio=1+(session("pagina")-1)*rs.pagesize
fin=inicio+9
if fin > rs.recordcount then
fin =rs.recordcount
end if
%>
<center><h3>Paginación de registros</h3></center>
<table border="0" width="100%" bgcolor="#C0C0C0">
<tr>
<td width="50%" align="center">Registros <font color="#FF0000"><%=inicio%> </font>
al <font color="#FF0000"><%=fin%></font> de un total de
<font color="#FF0000"><%=rs.recordcount%></font></td>
<td width="50%" align="center">Página <font color="#FF0000"><%=session("pagina")%>
</font> de <font color="#FF0000"><%=rs.pagecount%></font></td>
</tr>
</table>
<br>
<table BORDER="1" CELLSPACING="0" BORDERCOLOR="#000000" CELLPADDING="2" width="100%">
<tr>
<td BGCOLOR="#C0C0C0"><b>Autor</b></td>
<td BGCOLOR="#C0C0C0"><b>Título</b></td>
<td BGCOLOR="#C0C0C0"><b>Formato</b></td>
<td BGCOLOR="#C0C0C0"><b>Duración</b></td>
</tr>


<!-- montamos el bucle para mostrar los registros -->

<%
contador=0
Do While contador < rs.pagesize and NOT rs.EOF%>


<tr>
<td><%= rs("Autor")%></td>
<td><%= rs("Título")%></td>
<td><%= rs("Formato")%></td>
<td><%= rs("Duración")%></td>
</tr>

<% rs.MoveNext
contador=contador+1
Loop
%>
</table>
<div align="center">
<center>

<!-- mostramos los botones de adelante y atras segun proceda -->

<table border="0" width="38%" height="5">
<tr><%if session("pagina")<> 1 then %>
<td width="50%" height="1" align="center">
<form method="POST" action="autor.asp">
<p><input type="submit" value="Atras" name="autor"></p>
</form>
</td><%end if%>
<%if session("pagina")< rs.pagecount then%>
<td width="50%" height="1" align="center">
<form method="POST" name="autor.asp">
<p><input type="submit" value="Adelante" name="autor"></p>
</form>
</td><%end if%>
</tr>
</table>
</center>
</div>

<!-- cerramos el recordset -->

<%rs.Close%>

</body></html>

Gracias por vuestro interés.
  #2 (permalink)  
Antiguo 06/12/2005, 14:59
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 2 meses
Puntos: 1
Ola buenas, bienvenido al foro.

Tienes algún autor llamado así?
Cita:
where autor=('" & Replace(xx, "'", "''") & "')


No entiendo el filtro que deseas hacer, explícanos el resultado que quieres obtener.
Cita:
Where Autor = '" & XX "'
Where Autor <> ""
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #3 (permalink)  
Antiguo 06/12/2005, 15:55
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 18 años, 9 meses
Puntos: 0
Explicate mejor dime tienes una tabla Autor, Título, Duración y Formato. Y exactamente que quieres un empaginamiento o eliminar registro es que no logro entenderte.
  #4 (permalink)  
Antiguo 06/12/2005, 17:26
 
Fecha de Ingreso: diciembre-2005
Mensajes: 8
Antigüedad: 18 años, 6 meses
Puntos: 0
Buenas noches:

Cita:
Iniciado por Fr@Nc3$c0
Ola buenas, bienvenido al foro.

Tienes algún autor llamado así?
where autor=('" & Replace(xx, "'", "''") & "')

No entiendo el filtro que deseas hacer, explícanos el resultado que quieres obtener.
No, no tengo ningún autor con ese nombre , xx es una variable. Replace permite la búsqueda si encuentra ' y no sé si algún signo más... en cambio con & no pasa nada, en la tabla autor y que no de error. Si sólo pongo: .... where autor = '" & xx & "'" al filtar por un autor que lleve por ejemplo ' me salta este error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresión de consulta 'autor = 'GUNS N'ROSES''.
/musica/autor.asp, línea 56
... y al poner: where autor=('" & replace(xx, "'", "''") & "')" no tengo problemas y me aparece bien autor: GUNS N'ROSES.

Igual ocurre en combo Títulos.

Otra cosa es que no deseo eliminar registros, sólo paginar de 10 en 10. Con el autor MIKE OLDFIELD tengo más de 10 registros y al poner: ...where autor=('" & replace(xx, "'", "''") & "')" me aparece bien la 1ª pag. (10 registros por autor), pero al dar al botón ADELANTE me salta el error que he puesto en mi anterior post. He probado a quitar el where autor..... y dejar que aparezcan todos los registros y sale bien. Es al meter el where donde me salta el problema.
Con ... where autor = '" & xx & "'" me pasa lo mismo (con el agravante de encontrar un autor con un signo ' y me de otro error).
Musica.asp está compuesta por cuatro combos: Autor, Título, Formato y Duración que se nutre de musica.mdb, de sus respectivas tablas del mismo nombre.

Gracias por la atención.
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 22:59.