Làm thế nào để thực thi một thủ tục lưu trữ từ Excel?

Tôi có đoạn mã sau để thực thi một stored procedure từ SQL Server và trả về một dataset vào Excel, sử dụng một tham số được lấy từ listbox, tuy nhiên tôi nhận được thông báo lỗi "procedure smsabacodes has no parameters and arguments were supplied". Xin vui lòng cho tôi biết vấn đề nằm ở đâu?

Cảm ơn rất nhiều

Private Sub CommandButton1_Click()

Dim cmd As New ADODB.Command

Đặt cmd = New ADODB.Command

Dim objconn As ADODB.Connection

Dim rsdata As New ADODB.Recordset

Dim sconnect As String

'tạo chuỗi kết nối

cmd.ActiveConnection = Chuỗi kết nối của tôi

cmd.CommandText = "smsabacodes"

cmd.CommandType = adCmdStoredProc

cmd.Parameters.Append _

cmd.CreateParameter("@sabacode", adVarChar, adParamInput, 12, ListBox1.Value)

'Tạo các đối tượng kết nối và tập bản ghi'

Set objconn = New ADODB.Connection

Set rsdata = New ADODB.Recordset

'MỞ KẾT NỐI VÀ THỰC THI THỦ TỤC LƯU TRỮ'

Với rsdata

.CursorType = adOpenStatic

.CursorLocation = adUseClient

.LockType = adLockOptimistic

.Mở cmd

'NHỚ LẤY LẠI HỒ SƠ'

Nếu không phải rsdata.EOF thì

'ĐỔ NỘI DUNG CỦA TẬP BẢN GHI VÀO BẢNG TÍNH'

Sheet1.Range("A10").CopyFromRecordset rsdata

'ĐÓNG BỘ GHI

rsdata.Close

'ĐIỀU CHỈNH ĐỘ RỘNG CỘT CHO PHÙ HỢP VỚI DỮ LIỆU'

Sheet1.UsedRange.EntireColumn.AutoFit

Khác

MsgBox "Lỗi: không có bản ghi nào được trả về", vbCritical

Kết thúc nếu

'DỌN DẸP CÁC ĐỐI TƯỢNG ADO'

Nếu CBool(objconn.State And adStateOpen) thì objconn.Close

Đặt objconn = Nothing

Đặt rsdata = Nothing

Kết thúc bằng

End Sub




Trả lời:
Vì bạn đang làm việc với Excel và SQL Server, vui lòng đăng câu hỏi của bạn tại liên kết sau để được hỗ trợ thêm: http://social.technet.microsoft.com/Forums/en/excel/threads

Comments

Popular posts from this blog

Xử lý hàng loạt các tệp Excel được bảo vệ bằng mật khẩu

Thu hẹp và mở rộng cột trong Excel

Excel 2016 - mở tất cả các tệp trong MỘT phiên bản