Laufzeitfehler 3709: Der angeforderte Vorgang erfordert ein OLE DB-Sitzungsobjekt, das von dem aktuellen Provider nicht unterstützt wird.

  • Word

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von KronSii.

    Laufzeitfehler 3709: Der angeforderte Vorgang erfordert ein OLE DB-Sitzungsobjekt, das von dem aktuellen Provider nicht unterstützt wird.

    Hallo,

    ich stehe gerade etwas auf dem Schlauch und hoffe ihr könnt mir weiterhelfen.
    Ich bin gerade dabei ein recht großes Word Makro zu schreiben und dabei wird des öfteren auf eine Datenbank zugegriffen. Jetzt schreibe ich gerade eine neue Abfrage, welche vor allen anderen Abfragen aufgerufen wird. Dabei erscheint die oben genannte Fehlermeldung.
    Hier zunächst einmal der Quellcode. Ich habe einige unrelevanten Stellen vereinfacht.

    Visual Basic-Quellcode

    1. Public cnn As New ADODB.Connection
    2. Public rec As New ADODB.Recordset
    3. Function CnnDatabase()
    4. On Error Resume Next
    5. cnn.Close
    6. cnn.Mode = adModeRead
    7. If Is64BitWin() = True Then '64 Bit
    8. cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    9. "Data Source=C:\Program Files (x86)\abc\abcLocal.mdb;" & _
    10. "Jet OLEDB:Database Password=" & pw & "#1;"
    11. Else '32 Bit
    12. cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    13. "Data Source=C:\Program Files\abc\abcLocal.mdb;" & _
    14. "Jet OLEDB:Database Password=" & pw & "#1;"
    15. End If
    16. End Function


    jetzt wird aus einer Userform die Folgende Funktion aufgerufen.

    Visual Basic-Quellcode

    1. Function getUser()
    2. Dim cmd As New ADODB.Command
    3. Dim oyear As Integer
    4. Dim otypenumber As Integer
    5. oyear = 2012
    6. otypenumber = 1111
    7. Call CnnDatabase
    8. rec.CursorType = adOpenKeyset
    9. rec.LockType = adLockReadOnly
    10. With cmd
    11. Set .ActiveConnection = cnn
    12. .CommandType = adCmdText
    13. .CommandText = "SELECT Orders.Orderident AS [ID], " & _
    14. "Orders.Tasknumber AS [TASK] " & _
    15. "FROM Orders " & _
    16. "WHERE Orders.OBJECTYEAR = ? AND Orders.OBJECTTYPENUMBER = ?"
    17. .Parameters.Append .CreateParameter("oyear", adSmallInt, adParamInput, 100, oyear)
    18. .Parameters.Append .CreateParameter("otypenumber", adSmallInt, adParamInput, 100, otypenumber)
    19. Set rec = .Execute
    20. End With
    21. On Error GoTo Ende:
    22. rec.MoveFirst
    23. MsgBox "ich habe etwas gefunden"
    24. Ende:
    25. MsgBox "Ende"
    26. rec.Close
    27. End Function


    In der Zeile "Set .ActiveConnection = cnn" erscheint dann die Fehlermeldung

    Das Interessante ist, dass ich in der nächsten Userform die exakt gleiche Abfrage starte und mir ein Ergebnis geliefert wird. Auch alle anderen Abfragen laufen problemlos.

    Ich hoffe ihr könnt mir weiterhelfen.

    Gruß
    KronSii
    Hau mal On Error Resume Next raus bei der CnnDatabase und dann debug mal schritt für schritt und schau ob das ConnectionObjekt auch richtig geöffnet wird.
    Das ist meine Signatur und sie wird wunderbar sein!
    Hey,

    also ich versuche es nochmal mit anderen Worten.
    Bitte entferne das On Error Resume Next in der Methode CnnDatabase() und dann durchlaufe das Programm Schritt für Schritt im Debug Modus und schau dir das Connection Objekt (cnn) mal näher an. (ist es korrekt geöffnet usw)
    Das ist meine Signatur und sie wird wunderbar sein!
    hey,

    oh hatte deine Frage falsch verstanden. Bin jetzt auf den Fehler gestoßen. Ich hatte das Passwort verschlüsselt und zum Zeitpunkt der SQL Abfrage war das Passwort noch nicht entschlüsselt.
    Danke für den Hinweis mit dem debuggen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KronSii“ ()