VBA Access将SP的结果分配给文本框或显示在表格中

时间:2014-02-20 05:32:45

标签: sql-server vba access-vba

我有这个代码似乎工作,它不会给我任何错误。它只是想读取存储在SQL Server上的SP。但结果在哪里?以及如何在表中显示结果或将其分配给Access中的文本框。 (我是VBA和Access的新手)

Sub modSQL_ConnadObjectAndStoredProcedure()
'example of a command object using input and output parameter
Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim param As ADODB.Parameter
Dim txtConnectionString As String
txtConnectionString = "Provider=SQLOLEDB;Data Source=MYSERVER; " & _
"Initial Catalog=DisaggregatedPatronage;Integrated Security=SSPI"
conn.ConnectionString = txtConnectionString
cmd.CommandText = "usp_CountOrdersByDate2"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = conn.ConnectionString
Set param = cmd.CreateParameter("ReturnValue", adInteger, adParamReturnValue)
cmd.Parameters.Append param
Set param = cmd.CreateParameter("Thedate", adDBDate, adParamInput, _
, "16 August 1996")
cmd.Parameters.Append param
Set param = cmd.CreateParameter("OrderCount", adInteger, adParamOutput)
cmd.Parameters.Append param
For Each param In cmd.Parameters
Debug.Print param.name, param.Value
Next
cmd.Execute
Debug.Print cmd.Parameters("OrderCount")
Debug.Print cmd.Parameters("ReturnValue")
Set cmd = Nothing
Set conn = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

您拥有的代码不会产生我认为您正在寻找的结果。该代码将执行存储过程,但不会向您显示任何结果。你能分享名为'usp_CountOrdersByDate2'的SP中的内容吗?

'For'循环中的'Debug.print'只是循环遍历该SP的参数,显示名称和值。我希望你知道Debug.print结果被发送到'Immediate'窗口。

Execute之后的两个Debug.print只显示您之前提交的参数的值。如果您尝试获取某些查询的结果,则需要采用不同的方法。关于存储过程的作用,使世界变得不同。