Error ADODB.Recordset error '800a0cb3'
Publicado por fjmasero (2 intervenciones) el 19/08/2004 19:27:23
Wenas:
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'.
¿xq puede ser?.
Salu2 y gracias
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'.
¿xq puede ser?.
Salu2 y gracias
Valora esta pregunta


0