Error ADODB. Recordset error '800a0cb3'

Estoy desarrollando para un portal con páginas asp (vbscript). El gestor de bases de datos es SQL Server 2000.
Sin embargo, los accesos a la base de datos los hago mediante una dll realizada en VB 6.0.
En una clase de la dll tengo el siguiente código:
...
lsSQL = "SELECT TOP " & piNumReg * piNumPag & " * from Empleo"
'Definicion de la consulta
Dim loCmd As ADODB.Command
Set loCmd = New ADODB.Command
Set loCmd.ActiveConnection = Conexion
loCmd.CommandText = lsSQL
loCmd.CommandType = ADODB.adCmdText
'Obtenemos el resultado de la consulta almacenandolo en un RecordSet
Dim loRs As ADODB.Recordset
Set loRs = New ADODB.Recordset
loRs.Open loCmd, , ADODB.adOpenStatic,
ADODB.adLockOptimistic
'Nos posicionamos en el primer registro de la pagina
loRs.PageSize = piNumReg
If loRs.RecordCount <> 0 Then loRs.AbsolutePage = piNumPag
...
Las vars piNumReg y piNumPag son parametros recibidos en el método en cuestión.
Pues si en vez de hacer el select del inicio, hago Select DISTINCT TOP ..., y el resto =, me da el siguiente error:
ADODB. Recordset error '800a0cb3'
El Recordset actual no admite marcadores. Puede ser una limitación del proveedor o del tipo de cursor seleccionado.
Y la única diferencia es el distinct.
He probado este Select Distinct Top ... Desde el Analizados de Consultas y funciona bien.
También he probado diferentes combinaciones en el loRs.Open..., y na'.
¿Por qué puede ser?.

1 Respuesta

Respuesta
1
Bueno pues entonces no utilizs campos que no tiran con Distinct. Veamos, has probado a ver como construye la cadena de selección contenida en 'lsSQL'. Cuando la visualices cópiala y pégala en analizador de consultas a ver si que te devuelve.
Y otra cosa has probado a ir modificando los cursores e ir cambiando ADODB. AdOpenStatic,
ADODB. AdLockOptimistic
Por otros.
¿Y otro más en que linea te da el error?
No se igual ya has echo todo esto, no se me ocurre mucho más.
Ya me cuentas.
Gracias por contestar.
Bueno, como he dicho, he probado el select distinct top ..., por ejemplo, desde el Analizador de Consultas de SQL Server, y funciona.
Por otro lado, los Select Distinct CampoTexto from tabla, a mi me han funcionado.
Por último, también he probado a que el sql empleado en el código fuera
SELECT TOP " & piNumReg * piNumPag & " Campo1,Campo2 from Empleo
Y me da el mismo error.
En cuanto quito el Distinct, funciona, pero no lo entiendo, puesto que el sql si "tira".
Espero que podáis ayudarme.
Saludos
DISTINCT no se puede usar con campos text, ntext e image prueba a utilizar el DISTINCT sustituyendo el '*' por la lista de campos que no sean ninguno de los tres tipos anteriores y mira a ver si te funciona. Es lo único que se me ocurre.
A ver que pasa y suerte.
Pues efectivamente, ya he comprobado que el sql que se genera funciona correctamente, y también he combinado los cursores.
En cuanto a la línea, como es una dll invocada desde asp, no me indica la línea donde está el error en dicha dll.
Tengo que ponerme con mucha paciencia e ir haciendo un seguimiento.
Saludos y gracias
Pues me temo que no puedo ayudarte, de todas formas, preguntare por ahí y pensare en ello, si averiguo algo te lo comunico.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas