我在Excel工作簿下面的代碼,我從this page.複製Excel的VBA - 運行SQL存儲過程中的錯誤
代碼:
Sub Button1_Click()
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim WSP1 As Worksheet
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset
'''Clear extract area'''
Worksheets("Extract").UsedRange.Delete
'''Log into SQL Server'''
con.Open "Provider = SQLOLEDB;" & _
"Data Source = MySource;" & _
"Initial Catalog = MyDB;" & _
"User ID = MyID;" & _
"Password = MyPassword;"
cmd.ActiveConnection = con
'''Set up parameters for stored procedure'''
cmd.Parameters.Append cmd.CreateParameter("startDate", adDate, adParamInput, , Range("C2"))
cmd.Parameters.Append cmd.CreateParameter("endDate", adDate, adParamInput, , Range("C3"))
cmd.CommandText = "DB.StoredProc"
Set rs = cmd.Execute(, , adCmdStoredProc)
Set WSP1 = Worksheets("Extract")
WSP1.Activate
If rs.EOF = False Then WSP1.Cells(1, 1).CopyFromRecordset rs
rs.Close
Set rs = Nothing
Set cmd = Nothing
con.Close
Set con = Nothing
End Sub
我上線「如果RS以下錯誤消息.EOF = False Then'
「當對象關閉時不允許操作。」
這是我第一次使用這些功能。我做錯了什麼?
另外,我是否正確設置了多個參數?
---快速編輯--- 不知道是否值得一提的是,我將日期格式設置爲yyyy-mm-dd,因爲它在SQL服務器中。
我將名稱更改爲「DB.StoredProc」以發佈問題。這是我係統上的真實姓名。 – Jamsandwich
對不起,剛剛發現它 昏暗的rs作爲ADODB.Recordset 應該是 昏暗的rs作爲新的ADODB.Recordset –
沒問題。我按照你的說法改變了它,但沒有運氣。 – Jamsandwich