存儲過程pFetchData有兩參數,一輸入一輸出,且返回記錄集:    Dim cn As New ADODB.Connection
    Dim cm As New ADODB.Command
    Dim rs As New ADODB.Recordset
    
    cn.CursorLocation = adUseClient
    cn.Open "Provider=SQLOLEDB.1;Password=11111;Persist Security Info=True;User ID=user;Initial Catalog=db;Data Source=server"
    
    cm.ActiveConnection = cn
    cm.CommandType = adCmdStoredProc
    cm.CommandText = "pFetchData"
    
    Set prmByRoyalty = New ADODB.Parameter
    prmByRoyalty.Name = "@byvPosition"
    prmByRoyalty.Type = adVarChar
    prmByRoyalty.Size = 10
    prmByRoyalty.Direction = adParamInput
    prmByRoyalty.Value = "al%"
    cm.Parameters.Append prmByRoyalty    Set prmReturn = New ADODB.Parameter
    prmReturn.Name = "@byvReturn"
    prmReturn.Type = adInteger
    prmReturn.Size = 1
    prmReturn.Direction = adParamOutput
    cm.Parameters.Append prmReturn
    
    
    Set rs = cm.Execute
    Set fpSpread1.DataSource = rs
    MsgBox cm.Parameters("@byvReturn").Value    set rs=nothing
    set cn=nothing
    ...

解决方案 »

  1.   

    我不用output参数,我就想得到存储过程的return值
      

  2.   

    那你的存储过程是用return返回结果呢?
    还是用输出参数? 这两种的处理方法有点不同.最好能把存储过程帖出来.
      

  3.   

    自己修改一下嘛,如果存儲過程中用的是return,vb中就需用command對象的參數提取,如果是用select 返回記錄,vb中就需用recordset對象提取。
      

  4.   

    哦,我是用return返回的,那我用DataEnvironment可以提取参数吗
      

  5.   

    --那个要用command对象才能取得,示例Dim iCmd As ADODB.Command
    Set iCmd = New ADODB.Command
    With iCmd
        .ActiveConnection = 数据库连接字符串
        .CommandType = adCmdStoredProc
        .CommandText = "存储过程名"
        .Parameters.Refresh
        .Parameters("@输入参数")= 值 '如果有输入参数的话,赋值
        MsgBox "结果:" & .Parameters(0)
    End With
      

  6.   

    DataEnvironment中的Command不能得到存储过程的return值吗
    照理应该可以啊,因为DataEnvironment中也是由很多Command构成的啊
      

  7.   

    http://www.3552808.com/gy/dl/Article_Show.asp?ArticleID=99
    这个行吗?