简体   繁体   中英

Call a stored procedure from VBA

I'm pretty new to SQL and VBA and I've written the following query in SQL Server:

ALTER PROCEDURE SP_insert_search_archive 
    @IP_Address VARCHAR(20),
    @DT VARCHAR(30), 
    @search_word VARCHAR(50), 
    @search_time TIME
AS
    INSERT INTO Search_Archive
    values (@IP_Address, @DT, @search_word, @search_time);

Now I would like to execute this stored procedure in VBA (Excel):

Dim StartTime As Double
Dim SecondsElapsed As Double

Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim par As String
Dim WSP1 As Worksheet
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset
StartTime = Timer

Application.DisplayStatusBar = True
Application.StatusBar = "Contacting SQL Server..."
con.Open "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=master;Integrated Security=SSPI;Trusted_Connection=Yes;"
cmd.ActiveConnection = con
SecondsElapsed = Round(Timer - StartTime, 4)
Dim search_word As String
search_word = Range("D2").Text
Dim IP As String
IP = GetMyPublicIP

cmd.Parameters.Append cmd.CreateParameter("IP", adVarChar, adParamInput, 20, IP)
cmd.Parameters.Append cmd.CreateParameter("DT", adVarChar, adParamInput, 30, Now)
cmd.Parameters.Append cmd.CreateParameter("Search Word", adVarChar, adParamInput, 50, search_word)
cmd.Parameters.Append cmd.CreateParameter("Search Time", adVarChar, adParamInput, 20, SecondsElapsed)
cmd.CommandText = "SP_insert_search_archive"
Set rs = cmd.Execute(, , adCmdStoredProc)

rs.Close
Set rs = Nothing
Set cmd = Nothing
MsgBox (DT)
con.Close
Set con = Nothing

When I'm activating the macro, I get this error:

Runtime error '-2147217900 (80040e14)':

Procedure or function SP_insert_search_archive has too many arguments specified

问题可能出在参数名称上,您在其中留下空格而不是用“_”分隔(“搜索词”而不是“搜索字”)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM