存儲過程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
...
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
...
还是用输出参数? 这两种的处理方法有点不同.最好能把存储过程帖出来.
Set iCmd = New ADODB.Command
With iCmd
.ActiveConnection = 数据库连接字符串
.CommandType = adCmdStoredProc
.CommandText = "存储过程名"
.Parameters.Refresh
.Parameters("@输入参数")= 值 '如果有输入参数的话,赋值
MsgBox "结果:" & .Parameters(0)
End With
照理应该可以啊,因为DataEnvironment中也是由很多Command构成的啊
这个行吗?