मेरे पास एक्सेल में निम्नलिखित यूडीएफ है जो मेरे एमएसएसक्यूएल सर्वर से कनेक्ट करने के लिए एडीओ का उपयोग करता है। वहां इसे स्केलर udf "D100601RVDATABearingAllow" निष्पादित करना चाहिए।एडीओडीबी ओपन रिकॉर्डसेट विफल रहता है/"ऑब्जेक्ट बंद होने पर ऑपरेशन की अनुमति नहीं है"
किसी कारण से पैरामीटर जिन्हें मैं संलग्न करने का प्रयास करता हूं, एसक्यूएल सर्वर को नहीं भेजता है। सर्वर पर केवल:
SELECT dbo.D100601RVDATABearingAllow
आता है।
मेरी एक्सेल यूडीएफ:
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 डिबगर में recordset के गुणों "ऑपरेशन का एक बहुत है अनुमति नहीं है जब वस्तु बंद कर दिया है "(कुछ अलग लग सकता है, संदेश में अनुवाद किया है)
जब मैं adCmdStoredProc का उपयोग नहीं करते मैं संदेश मिलता है कि चर फास्टनर प्रदान नहीं किया गया।
मुझे लगता है कि रिकॉर्डसेट खोलने के तरीके में कुछ गलत हो सकता है। अन्य ट्रेडों में मैंने "SET NOCOUNT ON" विकल्प का उपयोग करने के बारे में पढ़ा है, लेकिन यह भी काम नहीं करता है।
क्या किसी के पास कोई विचार है? सादर Lumpi
मैंने SELECT कथन हटा दिया। क्या पैराम 2 को विज्ञापन के रूप में परिभाषित करना सही है जब सर्वर पर फ़्लोट फ़्लोट होता है? adChar = varchar (20) के लिए एक ही सवाल? – Lumpi
रुचि रखने वाले सभी के लिए: मैंने एक ही प्रश्न पोस्ट किया: http://www.codeproject.com/Questions/265573/ADODB-open-recordset-fails- ऑपरेशन-is-not-allowe और कुछ रोचक टिप्स प्राप्त हुए लेकिन , समस्या अभी भी हल नहीं है .. – Lumpi