Ho la seguente UDF in excel che utilizza ADO per connettersi al mio server MSSQL. Lì dovrebbe eseguire lo scalf udf "D100601RVDATABearingAllow".ADODB recordset aperto non riesce/"Operazione non consentita quando l'oggetto è chiuso"
Per qualche motivo i parametri che provo ad aggiungere non vengono inviati al server sql. Solo al server:
SELECT dbo.D100601RVDATABearingAllow
arriva.
My 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
Quando uso adCmdStoredProc il tutto non riesce e nel debugger vba le proprietà del set di record ha un sacco di "operazione non è consentita quando l'oggetto è chiuso "(può sembrare un po 'diverso, il messaggio viene tradotto)
Quando non uso adCmdStoredProc ottengo il messaggio che il variabile Fastener era non fornito.
Penso che forse qualcosa non va nel modo in cui apro il recordset. In altre pedate ho letto sull'utilizzo dell'opzione "SET NOCOUNT ON", ma non ha funzionato.
Qualcuno ha un'idea? Saluti Lumpi
Ho rimosso l'istruzione SELECT. È corretto definire Param2 come adDouble quando sul server il tipo è Float? stessa domanda per adChar = varchar (20)? – Lumpi
Per tutti quelli che sono interessati: ho postato la stessa domanda su: http://www.codeproject.com/Questions/265573/ADODB-open-recordset-fails-Operation-is-not-allowe e ho ricevuto alcuni suggerimenti interessanti ma , il problema non è ancora risolto .. – Lumpi