Hola a todos!
Tengo un procedimiento almacenado que devuelve un par de parametros y un
recordset. EL procedimiento internamente tiene un cursor, y una tabla
temporal.
Para recoger el recordset desconectado uso el siguiente codigo:
Set oADOcnx = New ADODB.Connection
oADOcnx.ConnectionString = ObtenerCadConexion()
oADOcnx.Open
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = oADOcnx
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "miprocedimiento"
cmd.Parameters.Append cmd.CreateParameter("@nEstado", adInteger,
adParamOutput)
cmd.Parameters.Append cmd.CreateParameter("@cMsg", adVarChar,
adParamOutput, 250)
'creamos un recordset desconectado
Set MiRs = New ADODB.Recordset
With MiRs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockBatchOptimistic
Set .Source = cmd
.Open
Set .ActiveConnection = Nothing
End With
Este codigo esta dentro de un objeto COM+, que uso desde una pagina ASP. El
problema es que me devuelve este error:
Cannot change the ActiveConnection property of a Recordset object which has
a Command object as its source
Pero lo mas curioso de todo es que dependiendo de donde llame al objeto
COM+, obtengo el error o no. Ejemplos:
1. Llamo al objeto COM+ desde un programa cliente hecho en VB6 --> Funciona
perfectamente
2. Llamo al objeto COM+ desde un programa cliente hecho en ASP --> Me da el
error que os comento
3. Llamo al objeto COM+ desde un programa cliente hecho en VB6, pero
modifico el procedimiento almacenado de forma que en su interior haya
solamente un simple select (sin cursor ni tabla temporal) --> Funciona
perfectamente
4. Llamo al objeto COM+ desde un programa cliente hecho en ASP, pero
modifico el procedimiento almacenado de forma que en su interior haya
solamente un simple select (sin cursor ni tabla temporal) --> Funciona
perfectamente
LA verdad es que me tiene un poco extrañado. ¿Alguien ha tenido problemas
similares?
Saludos!
Leer las respuestas