У меня есть следующий UDF в Excel, который использует ADO для подключения к моему серверу MSSQL.Там он должен выполнить скаляр udf "D100601RVDATABearingAllow".
По какой-то причине параметры, которые я пытаюсь добавить, не отправляются на сервер sql.Только на сервере:
SELECT dbo.D100601RVDATABearingAllow
.
МОЙ EXCEL UDF:
Function RVDATA(Fastener) As Long
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim Cmd1 As ADODB.Command
Dim stSQL As String
Const stADO As String = "Provider=SQLOLEDB.1;Data ................"
'----------------------------------------------------------
Set cnt = New ADODB.Connection
With cnt
.ConnectionTimeout = 3
.CursorLocation = adUseClient
.Open stADO
.CommandTimeout = 3
End With
'----------------------------------------------------------
Set Cmd1 = New ADODB.Command
Cmd1.ActiveConnection = cnt
Cmd1.CommandText = "dbo.D100601RVDATABearingAllow"
Cmd1.CommandType = adCmdStoredProc
'----------------------------------------------------------
Set Param1 = Cmd1.CreateParameter("Fastener", adInteger, adParamInput, 5)
Param1.Value = Fastener
Cmd1.Parameters.Append Param1
Set Param1 = Nothing
'----------------------------------------------------------
Set rst = Cmd1.Execute()
RVDATA = rst.Fields(0).Value
'----------------------------------------------------------
rst.Close
cnt.Close
Set rst = Nothing
Set cnt = Nothing
'----------------------------------------------------------
End Function
Когда я использую adCmdStoredProc, все происходит не так, и в отладчике vba свойствав наборе записей много " Операция не разрешена, когда объект закрыт " (может звучать немного иначе, сообщение переведено)
Когда я надеваюне использую adCmdStoredProc Я получаю сообщение о том, что переменная Крепеж был не предоставлен .
Я думаю, что возможночто-то не так в том, как я открываю набор записей.В других шагах я читал об использовании опции «SET NOCOUNT ON», но это тоже не сработало.
У кого-нибудь есть идея?С уважением Lumpi