जब यह वीबीए कोड रिकॉर्डसेट को खोलने का प्रयास करता है, तो मुझे निम्न त्रुटि मिलती है: रन टाइम एरर '3709' इस ऑपरेशन को करने के लिए कनेक्शन का उपयोग नहीं किया जा सकता है। इस संदर्भ में यह, या तो बंद अथवा अमान्य है।

Set objMyConn = New ADODB.Connection
Set objMyRecordset = New ADODB.Recordset
Dim strSQL As String

objMyConn.ConnectionString = "Driver={SQL Server};Server=localhost\SQLEXPRESS;Database=Contact;Trusted_Connection=True;"
objMyConn.Open

strSQL = "Select * from Contact where Lastname like " + Chr(39) + LastSearch + "%" + Chr(39) + " And Firstname like " + Chr(39) + FirstSearch + "%" + Chr(39)

MsgBox strSQL

objMyRecordset.Open strSQL, cnn, adOpenForwardOnly, adLockOptimistic
3
Luv 31 अगस्त 2017, 03:43

2 जवाब

सबसे बढ़िया उत्तर

अपने मॉड्यूल के शीर्ष पर Option Explicit जोड़ें; आप वीबीई को उस अघोषित cnn चर पर चिल्लाते हुए पाएंगे।

आपका रिकॉर्डसेट किसी भी खुले कनेक्शन का उपयोग नहीं कर रहा है - जैसा कि त्रुटि संदेश कह रहा है।

उस ने कहा कि आप स्ट्रिंग अक्षर के अंदर सिंगल कोट्स बहुत अच्छी तरह से कर सकते हैं; वह Chr(39) सामान बेकार ढंग से कोड को खराब कर रहा है।

इसके बजाय पैरामीटर का उपयोग करने पर भी विचार करें। यदि आप सुनिश्चित नहीं हैं, तो लिटिल बॉबी टेबल्स के बारे में पढ़ें।


यहाँ एक उदाहरण है:

Option Explicit

Sub Test()
    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection

    conn.ConnectionString = "Provider='SQLOLEDB';Data Source='INSTANCE NAME';Initial Catalog='DATABASE NAME';Integrated Security='SSPI';"
    conn.Open

    Dim sql As String
    sql = "SELECT Field1 FROM dbo.TestTable WHERE Field3 LIKE '%' + ? + '%'"

    Dim results As ADODB.Recordset
    With New ADODB.Command
        .ActiveConnection = conn
        .CommandType = adCmdText
        .CommandText = sql
        .Parameters.Append .CreateParameter(Type:=adVarChar, Value:="foo", Size:=255)

        Set results = .Execute

    End With

    Debug.Print results(0).Name, results(0).Value

    results.Close
    conn.Close
End Sub

ध्यान दें कि यह Command है जो Connection को निष्पादित करता है और रिटर्न a Recordset करता है।

1
Mathieu Guindon 31 अगस्त 2017, 05:02

यहाँ सामान्य ADODB कनेक्शन सेट अप है

Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strConnection As String

strConnection = "connectionString"
con.Open strConnection
rs.Open "SELECT * FROM Tbl", con
0
Doug Coats 31 अगस्त 2017, 03:58