Tôi đã thiết lập một thủ tục lưu sẵn trong SQL Server hoạt động tốt. bây giờ tôi có thể gọi nó từ VBA, nhưng muốn trả về một giá trị cho biết nếu có bất kỳ lỗi nào, vv Tham số cuối cùng trong SP của tôi được thiết lập như OUTPUT:Cách trả về các giá trị từ một thủ tục lưu trữ SQL Server và sử dụng chúng trong Access VBA
@DataSetID int = 0,
@Destination char(1)='-',
@errStatusOK bit OUTPUT
VBA của tôi để gọi SP dưới , nhưng nó sẽ không làm việc bây giờ, sau khi thêm các tham số mới và tôi không chắc chắn nơi tôi sẽ sai, tôi tiếp tục nhận được 3708 - Parameter object is improperly defined. Inconsistent or incomplete information was provided.
:
Set cnn = New adodb.Connection
cnn.ConnectionString =
"DRIVER=SQL Server;SERVER=SERVER\SERVER;DATABASE=a_db;Trusted_Connection=Yes"
cnn.Open cnn.ConnectionString
Set cmd = New adodb.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "stprMoveDataSet"
Set param = cmd.CreateParameter
("@DataSetID", adInteger, adParamInput, , stDataSet)
cmd.Parameters.Append param
Set param = cmd.CreateParameter
("@Destination", adChar, adParamInput, 1, stDestination)
cmd.Parameters.Append param
Set param = cmd.CreateParameter
("@errStatusOK", adBit, adParamReturnValue)
cmd.Parameters.Append param
rs.CursorType = adOpenStatic
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
rs.Open cmd
Làm thế nào tôi có thể nhận được VBA để làm việc với các OUTPUT tham số và làm cho giá trị trả về 'có thể đọc được' bởi vba.
EDIT - Tôi đã thay đổi câu hỏi để cụ thể hơn về trả về giá trị chứ không chỉ về việc sử dụng tham số OUTPUT.
Bạn phải đăng bài này trong khi tôi đã đăng câu trả lời của riêng tôi, tôi hiểu làm thế nào tôi đã đi sai với CreateParameter bây giờ. Rất cám ơn, có thể sử dụng điều đó trong tương lai. – aSystemOverload