【发布时间】:2014-10-21 11:27:42
【问题描述】:
我在 Excel 中实现了一些 VBA 代码,它调用了一个需要两个参数的 SQL Server 存储过程:整数和日期。
问题:如果我在 Excel 中执行我的 VBA 代码,我不会从我的 SQL Server 过程中获得任何数据。
我也没有收到任何错误消息。
如果我使用
在 SQL Server Management Studio 中执行我的过程EXEC [dbo.spsClient] '123456' '01.01.2014'
我从我的 SQL Server 过程中获得了一些数据。我认为我在处理 VBA 中的两个参数时遇到了问题。
我实现了以下代码:
...
nr = 123456
datepoint = DateValue(ActiveWorkbook.Sheets(sheetData).Cells(4, 3))
Dim ADODBCmd As New ADODB.Command
With ADODBCmd
.ActiveConnection = objconn
.CommandTimeout = 500
.CommandText = "dbo.spsClient"
.CommandType = adCmdStoredProc
.Parameters.Refresh
.Parameters.Append ADODBCmd.CreateParameter("@number", adVarChar, adParamInput, 50, nr)
.Parameters.Append ADODBCmd.CreateParameter("@date", adDate, adParamInput, datepoint)
Set recordset = .Execute()
End With
【问题讨论】:
-
尝试将硬编码日期作为字符串发送以消除格式问题。在 SQL Profiler 运行的情况下检查查询,查看实际发送到数据库的内容。
-
我还尝试了硬编码日期和 nr。它仍然无法正常工作... :(
-
从 Profiler 捕获,将 SQL 复制粘贴到管理工作室中,然后查看最新情况
-
@AlexK.,我已经在 SQL-Management 工作室尝试过,我得到了我期待的结果。
-
@vc74:你能说得更准确点吗?
标签: sql sql-server vba excel stored-procedures