【问题标题】:Call SQL Server Procedure with two parameters from VBA使用 VBA 中的两个参数调用 SQL Server 过程
【发布时间】: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


【解决方案1】:

我解决了我的问题:在第二个 Append.Parameters 中,我忘记验证大小,在本例中为(“50”)。

谢谢你帮助我。

【讨论】:

    猜你喜欢
    • 2016-10-13
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    相关资源
    最近更新 更多