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.