Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: H3llo am November 26, 2024, 15:51:29

Titel: Sortierung von Abfrage
Beitrag von: H3llo am November 26, 2024, 15:51:29
Hallo zusammen,

ich möchte alle Namen aus der AD in alphabetisch sortierter Reihenfolge abrufen. Folgenden Code habe ich:

    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
   
    Set rootDSE = GetObject("LDAP://rootDSE")
    domainDN = rootDSE.Get("defaultNamingContext")

    strFilter = "(&(objectClass=user))"
   
    strAttributes = "Name"
   
    strQuery = "<LDAP://" & domainDN & ">;" & strFilter & ";" & strAttributes & ";subtree"

    Set objCommand = CreateObject("ADODB.Command")
   
    With objCommand
        .ActiveConnection = objConnection
        .Properties("Page Size") = 100
        .CommandText = strQuery
    End With
   
    Set objRecordSet = objCommand.Execute

    objRecordSet.sOrt = "Name"

Leider funktioniert die Sortierung nicht (letzte Codezeile). Ich erhalte dort den Fehler "Der aktuelle Provider unterstützt nicht die erforderliche Schnittstelle für die Sortier- bzw. Filterfunktion". Was kann ich tun, um den Fehler zu beheben und die Ergebnisse zu sortieren?

Vielen Dank im Voraus!
Titel: Re: Sortierung von Abfrage
Beitrag von: markusxy am November 26, 2024, 17:16:56
Sort erfordert einen Client Cursor.
Würdest du auch erfahren, wenn du einen Blick in die Hilfe werfen würdest.

Verstehst du denn ungefähr was du tust, oder ist das alles Copy & Paste?
Titel: Re: Sortierung von Abfrage
Beitrag von: H3llo am November 27, 2024, 08:14:58
Hallo Markus, das ist hauptsächlich Copy-Paste muss ich gestehen. Es ist auch nichts, was ich alltäglich mache.
Titel: Re: Sortierung von Abfrage
Beitrag von: markusxy am Dezember 09, 2024, 22:33:04
Der Thread ist bei mir leider untergegangen.
Falls du es noch nicht gelöst hast:
Grundsätzlich würde ich kein Command Execute verwenden um Daten zurückzugeben, sondern immer Recordset open, da hast du dann die volle Kontrolle.

Ich würde es so versuchen - Achtung Luftcode:
    dim rs as adodb.Recordset
    set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open objCommand, , adOpenStatic, adLockBatchOptimistic
    rs.Sort = "Name desc"