Since you are returning a value from the RETURN statement, you need use a command object to execute, then check command.parameter(0).Value such as:
loConn = CREATEOBJECT('ADODB.Connection')
loConn.ConnectionString = GetConnString()
loCmd = CREATEOBJECT('ADODB.Command')
loCmd.ActiveConnection = loConn
loCmd.CommandText = 'sp_test'
loCmd.Execute()
lvRetVal = loCmd.Parameters(0).Value
Hope this helps,
Kurt
>There is a stored procedure as simple as this:
>CREATE PROCEDURE sp_test AS
>RETURN 33
>GO
>
>I'm trying to get the return value from VFP using ADO:
>LOCAL loConn AS ADODB.Connection, lvRetVal
>CLEAR
>loConn = CREATEOBJECT("ADODB.Connection")
>loConn.ConnectionString = GetConnString()
>loConn.Open()
>
>* 1 - Execute
>lvRetVal = loConn.Execute("sp_Test")
>?VARTYPE(lvRetVal), lvRetVal &&Shows O (Object)
>
>* 2 - as a native method
>lvRetVal = loConn.sp_Test() &&Crashes
>?VARTYPE(lvRetVal), lvRetVal
>
>loConn.Close()
>
>First call returns an object and as I can see from debugger it's a recordset. How would I get the number SP actually returns?
>
>Second call is supposed to be working according to Microsoft. I'm getting an error:
>"OLE IDispatch exception code 0 from ADODB.Connection: Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another..."
>But there is no arguments. What does it want from me?
>
>Thanks