RecordCount distinto de -1

Uno de los primeros problemas con los que todo programador de ASP se encuentra al empezar es el de contar el número de filas que tenemos en un Recordset.
Todos ponemos:

<%
...
cuantos=rs.RecordCount
...
%>


Y cuando queremos utilizarlo, nos ha devuelto -1.
¿Por qué? Porque si no lo especificamos nosotros el objeto Recordset toma sus valores predeterminados para CursorType y LockType.
Un cursor de tipo adCursorForwardOnly (valor 0) solo permite moverse hacia adelante. Y RecordCount lo que hace es ir al final del recordset y volver al principio. Si no puede volver devolverá un -1.
Así que lo que hay que hacer es poner un CursorType que permita moverse adelante y atrás por el Recordset. Veamos un ejemplo:

<%
Dim oConn, rs, SQL

...
'Ya estamos conectados a nuestra bd

' 1 = adOpenKeyset
rs.CursorType=1
rs.Open SQL, oConn

Response.Write( rs.RecordCount & " encontrados.")

rs.Close
oConn.Close
set rs=nothing
set oConn=nothing
%>

Este ejemplo devolverá el número correcto. Si en lugar de un cursor adOpenKeyset utilizamos un cursor adOpenStatic ( rs.CursorType=3 ) también funcionará.
Por supuesto, si incluyes al principio el archivo ADOVBS.INC no tendrás que poner los valores numéricos, sino los nombres de las constantes.
Resumiendo, para usar rs.RecordCount tienes que especificar el tipo de cursor así:
rs.CursorType=adOpenKeyset
ó
rs.CursorType=adOpenStatic
o con los valores:
rs.CursorType=1
rs.CursorType=3
Os recomiendo no utilizar RecordCount cuando hayáis traído de base de datos 5000 registros. Se hace un poco lento
 

Fuente: www.aspfacil.com