recuperar resultados de un SP

23/07/2004 - 14:19 por Jomaweb | Informe spam
Hola

Tengo un SP que cuando lo ejecuto desde el analizador de consultas funciona
perfectamente pero si lo ejecuto desde la aplicación me dice:
ADODB.Recordset error '800a0e78'
La operación no está permitida si el objeto está cerrado.



Y os juro que está abierto. De hecho si le ejecuto un simple "select
count(*) from contratos", funciona de maravilla. O sea que está abierto.

Este es el código ASP que le pasa los parametros al SP (pa_creacontrato) y
recupera los parametros de salida (mensaje) en un recordset. ¿falta algo?



SET CON=SERVER.CREATEOBJECT("ADODB.CONNECTION")

CON.open "driver={SQL
Server};server=servidor;uid=miuid;pwd=lapassword;database=contratos"

'concateno los parametros que le voy a pasar al SP
comando="pa_creacontrato " & ideprevio & ", " & previo & ", " & valoride & "
"

Set RSpa = Server.CreateObject("ADODB.RecordSet")

RSpa.Open comando, CON


if err.number =0 then


Do WHILE NOT RSpa.eof
response.write "<br>"
response.write RSpa.fields("mensaje")

RSpa.movenext
LOOP


else
response.write "<p >incidente " & err.number & "-" &
err.description & "</p>"
end if
 

Leer las respuestas

#1 Manuel Etcheto
26/07/2004 - 23:43 | Informe spam
Hola
Me parece que el problema es de concepto, dice que está queriendo recuperar
los parámetros de salida en un Recordset...

Obviamente, el recordset no existe, debería ejecutar un command

Salu2
Manuel

Jhonny Vargas P. escribió en el mensaje de
noticias #
Hola,

Mira este ejemplo:

'Procedimiento Almacenado
Create Procedure pa_creacontrato
@IDPrevio int,
@Previo int,
@Valoride int,
@Estado char(1)
As
Insert Into Tabla (IDPrevio, Previo, Valoride, Estado)
Values (@IDPrevio, @Previo, @Valoride, @Estado)

Select Cantidad = Count(IDPrevio) From Tabla (NOLOCK)

Go
'Fin Procedimiento almacenado

NOTA: El usuario que está en el string de conección debe tener permisos


para
ejecutar este procedimiento almancenado, para esto debes ir a los permisos


y
chequar que el usuario tenga acceso.


'y desde código

Dim objCon, objRec

Set objCon = Server.CreateObject("ADODB.Connection")

objCon.Open "... con string..."

'OJO, Estado es un char, por lo tanto debes incluir comillas simples
Sql = "pa_creacontrato " & IDPrevio & ", " & Previo & ", " & Valoride


&
", '" & Estado & "'"

Set objRec = objCon.Execute(Sql)

Response.Write "Cantidad: " & objRec("Cantidad")

Set objRec = Nothing

objCon.Close


Set objCon = Nothing


Saludos,
Jhonny Vargas P. [MVP]
Santiago de Chile
http://msmvps.com/jvargas



"Jomaweb" escribió en el mensaje
news:%
> Hola
>
> Tengo un SP que cuando lo ejecuto desde el analizador de consultas
funciona
> perfectamente pero si lo ejecuto desde la aplicación me dice:
> ADODB.Recordset error '800a0e78'
> La operación no está permitida si el objeto está cerrado.
>
>
>
> Y os juro que está abierto. De hecho si le ejecuto un simple "select
> count(*) from contratos", funciona de maravilla. O sea que está abierto.
>
> Este es el código ASP que le pasa los parametros al SP (pa_creacontrato)


y
> recupera los parametros de salida (mensaje) en un recordset. ¿falta


algo?
>
>
>
> SET CON=SERVER.CREATEOBJECT("ADODB.CONNECTION")
>
> CON.open "driver={SQL
> Server};server=servidor;uid=miuid;pwd=lapassword;database=contratos"
>
> 'concateno los parametros que le voy a pasar al SP
> comando="pa_creacontrato " & ideprevio & ", " & previo & ", " & valoride


&
"
> "
>
> Set RSpa = Server.CreateObject("ADODB.RecordSet")
>
> RSpa.Open comando, CON
>
>
> if err.number =0 then
>
>
> Do WHILE NOT RSpa.eof
> response.write "<br>"
> response.write RSpa.fields("mensaje")
>
> RSpa.movenext
> LOOP
>
>
> else
> response.write "<p >incidente " & err.number & "-" &
> err.description & "</p>"
> end if
>
>


Preguntas similares