Hola Alexis, los parametros necesarios para ejecutar un SP son algo diferentes a un recordset normal. Aqui está el código que utilizo para devolver un recordset (si el SP solo devuelve un valor y no un RS, el código es diferente).
LPARAMETERS cConnString As String ,cComando As String, lcParam As String
oConn = CREATEOBJECT("ADODB.Connection")
oRS = CREATEOBJECT("ADODB.Recordset")
oConn.Connectionstring = cConnString
oConn.Open
IF TYPE("lcParam")="U"
lcParam=""
ENDIF
cEjecuta = [oConn.]+cComando+[(]+lcParam+[,oRs)]
&cEjecuta
oConn = Null
oComando = Null
RETURN oRS
La ventaja que tienes con esta forma es que puedes pasar los parámetros como una cadena de caracteres en vez de crear un objeto parameter para cada uno de los parametros que necesites pasar al RS. La desventaja es que el RS retorna como readonly por lo que solo te util para datos de consulta.
Espero te sirva de algo
Enmanuel
>buen dia yo molestando otra ves por estos lares.
>Tengo el siguiente inconveniente, esta ves es con una base de datos VFox.
>
>Tengo una base de datos con datos y quiero hacer una consulta mediante ado pero me devuelve .t., ningun otro valor, el Sp dentro de la base de datos es el siguiente.
>
>PROCEDURE buscar_tbl
>PARAMETERS param001
>
>SELECT * FROM detalles WHERE numero = param001
>
>ENDPROC
>
>no se si estoy bien ya que nunca he trabajado con una bd de fox, siempre Sql :(
>
>el proceso donde se ejecuta el sp es el siguiente.
>
>
>cRuta = "c:\pruebabdfox\PRUEBA.DBC"
>#Define C_VFPCOMCLASS 'vfpcom.comutil'
>oVFPCOM = Createobject(C_VFPCOMCLASS)
>Ll_error = .F.
>Note: Inicio Busqueda del Sql........
>TRY
> cadenal2 = 'exec buscar_tbl 93202'
> WAIT windows cadenal2
> conSQl = "Provider=VFPOLEDB.1;Data Source=" + cRuta + ";Mode=ReadWrite"
> oconeccion = Createobject("adodb.connection")
> oconeccion.connectionstring = conSQl
> oconeccion.Open()
> orecordset=Createobject("adodb.recordset")
> orecordset.Open(cadenal2,oconeccion)
> If !orecordset.Eof()Then
> nError = oVFPCOM.RSToCursor(orecordset, "cur_all")
> ENDIF
> orecordset.Close
> oconeccion.Close()
> Release orecordset
> Release oconeccion
> RELEASE oVFPCOM
>Catch To oerror
> MESSAGEBOX(oerror.Message)
>Endtry
>
>
>estoy utilizando el vfpcom para cambiar los Record set a Cursores
>
>el valor que me devuelve esto es:
>return_value: nombre del campo que devuelve el proceso
>.t. : Valor en el Campo
>
>saludos...
I'm a mixture of Albert Einstein and Arnold Schwarzenegger. The only trouble is that I got Einstein's body and Schwarzenegger's brain