ADODB-recordset öffnen schlägt fehl / "Operation ist nicht zulässig, wenn Objekt geschlossen"

Habe ich folgende UDF in excel, die ADO verwendet, um eine Verbindung zu meiner MSSQL-server. Es sollte führen Sie die Skalare udf "D100601RVDATABearingAllow".

Aus irgendeinem Grund der Parameter, die ich versuche anzuhängen sind nicht senden, um den sql server. Nur auf dem server:

SELECT dbo.D100601RVDATABearingAllow

kommt.

MEINE 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

Wenn ich adCmdStoredProc die ganze Sache nicht und in der vba-debugger die Eigenschaften des recordset hat eine Menge "Operation ist nicht zulässig, wenn Objekt geschlossen ist" (klingt ein wenig anders, die Nachricht übersetzt)

Wenn ich nicht verwenden, adCmdStoredProc bekomme ich die Meldung, dass die variable - Verschluss war nicht vorgesehen.

Ich denke, dass vielleicht etwas falsch in der Art, wie ich das recordset öffnen.
In anderen treads habe ich gelesen, mit der "SET NOCOUNT ON" - option, aber das hat nicht funktioniert entweder.

Hat jemand eine Idee?
Grüße Lumpi

InformationsquelleAutor Lumpi | 2011-10-05
Schreibe einen Kommentar