He configurado un Procedimiento almacenado en SQL Server que funciona bien. Ahora puedo llamarlo desde VBA, pero desea devolver un valor para saber si hubo algún error, etc. El último parámetro en mi SP está configurado como SALIDA:Cómo devolver valores de un SQL Server Stored Procedure y utilizarlos en Access VBA
@DataSetID int = 0,
@Destination char(1)='-',
@errStatusOK bit OUTPUT
Mi VBA para llamar al SP está por debajo , pero no va a funcionar ahora, después de añadir el nuevo parámetro y no estoy seguro de dónde voy mal, me siguen dando 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
¿Cómo puedo obtener el VBA para trabajar con la salida parámetro y hacer que el valor de retorno sea 'legible' por la vba.
EDITAR - He cambiado la pregunta para que sea más específica sobre la devolución de valores y no solo sobre el uso de los parámetros OUTPUT.
Debes haber publicado esto mientras estaba publicando mi propia respuesta, entiendo cómo me equivoqué con CreateParameter ahora. Muchas gracias, pueden usar eso en el futuro. – aSystemOverload