[英]Insert Into Table from Excel via VB button to stored procedure with Variables
我有一個包含兩列的簡單表AMC_GW_TESTTABLE
, 名稱為 nvarchar(20)和電話為 nvarchar(12)。 我也有一個帶有兩個變量的簡單存儲過程。
create procedure AMC_GW_TESTSP (@name nvarchar(20),
@phone nvarchar(12)) as
insert into AMC_GW_Testtable (name,phone)
values (@name, @Phone)
我已經能夠在Excel中獲得一個按鈕來創建命令:
exec dbo.amc_gw_testsp 'fred' '620-555-1212'
但是它不執行它。 我將它完全復制到我的SSMS並執行它,並且效果很好。 有任何想法嗎?
VBA代碼
Sub Button1_Click()
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim connStr As String
Dim param As ADODB.Parameter
Dim param2 As ADODB.Parameter
connStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" _
& "Initial Catalog=am_app);Data Source=bcu-sql-01"
Set conn = New ADODB.Connection
conn.ConnectionString = connStr
conn.Open
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = conn
.CommandType = adCmdStoredProc
.CommandText = "AMC_GW_TESTSP"
Set param = .CreateParameter("@name", adVarChar, adParamInput, 20, "Christopher")
.Parameters.Append param
Set param2 = .CreateParameter("@phone", adVarChar, adParamInput, 12, "0123456789")
.Parameters.Append param
.Execute
End With
conn.Close
Set cmd = Nothing
Set conn = Nothing
End Sub
我希望我不會因為要求VBA代碼而嚇到你
讓您知道應該擁有什么:
Sub Button1_Click()
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim connStr As String
Dim param As ADODB.Parameter
Dim param2 As ADODB.Parameter
connStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" & _
"Initial Catalog=dbname;Data Source=servername"
Set conn = New ADODB.Connection
conn.ConnectionString = connStr
conn.Open
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = conn
.CommandType = adCmdStoredProc
.CommandText = "AMC_GW_TESTSP"
Set param = .CreateParameter("@name", adVarChar, adParamInput, 20, "Christopher")
.Parameters.Append param
Set param2 = .CreateParameter("@phone", adVarChar, adParamInput, 12, "0123456789")
.Parameters.Append param
.Execute
End With
conn.Close
Set cmd = Nothing
Set conn = Nothing
End Sub
您必須更改的事情。 首先是連接字符串(connStr)。 您將需要提供數據庫名稱代替dbname,並提供服務器代替servername。 此外,此字符串還假定您正在對SQL Server使用Windows身份驗證。 如果不是,則需要刪除Integrated Security = SSPI。 並在其位置提供User ID = myUser; Password = myPassword;。 接下來,您會注意到.CreateParameter函數中的最后一個參數是固定字符串(“ Christopher”和“ 0123456789”)。 在您的情況下,它們應該是來自電子表格中單元格的變量。 請,請確保這些字符串不包含“;” 在嘗試執行之前。
希望對您有所幫助,但如有任何不清楚之處,請隨時與我聯系!
PS:您需要確保在“工具參考”下,已選中最高版本的Microsoft ActiveX數據對象庫(我的版本是6.1,但絕對可以使用2.0或更高版本)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.