【发布时间】:2014-03-10 13:06:17
【问题描述】:
我正在使用 Excel 2007 和 SQL Server 2008 R2 Express。
我正在尝试从 VBA 中的 Excel 事件 Worksheet.Change 调用我的 SQL Server 存储过程。我有一张纸,我正在使用 3 个参数调用存储过程。
调用此存储过程时出现错误:
运行时错误“-2147217900 (80040e14)”
语法错误或访问冲突
到目前为止我的 Excel 脚本代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$4" Then
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
conn.ConnectionString = "Provider='SQLOLEDB'; " & _
"Data Source=compname\sqlservername; " & _
"Initial Catalog=databasename; " & _
"User Id= sa; " & _
"Password=****"
conn.Open
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "Test1 @zmienna1= " & CStr(Range("D4").Value) & _
" @zmienna2= " & CStr(Range("D4").Value) & _
" @zmienna3= " & CStr(Range("D4").Value)
cmd.Execute 'error
conn.Close
Set conn = Nothing
Set cmd = Nothing
End If
End Sub
当我更改 D4 单元格时,cmd.Execute 行出现错误。
我错过了什么?当我使用带参数的存储过程时,是否必须使用 ADODB.Command 对象的 Parameters 集合?
如果是 - 任何人都可以提供代码示例吗?有人可以帮忙吗?谢谢!
【问题讨论】:
标签: sql sql-server excel vba stored-procedures