带有从Excel事件调用的参数的SQL Server存储过程

我正在使用Excel 2007和SQL Server 2008 R2 Express。

我试图调用我的SQL Server存储过程从Excel事件VBA中的Worksheet.Change 。 我有一个工作表,我用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集合?

如果是 – 任何人都可以提供代码示例? 任何人都可以帮忙吗? 谢谢!

对于存储过程, CommandText应该只是存储过程的名称。 使用Command.Parameters集合来添加参数。

 Dim prm As ADODB.Parameter Set prm = cmd.CreateParameter("@par1", adChar, adParamInput, 255, _ CStr(Range("D4").Value) cmd.Parameters.Append prm