Partager via


Dialecte LDAP

Le dialecte LDAP est un format pour les instructions de requête qui utilisent la syntaxe du filtre de recherche LDAP. Utilisez une instruction de requête LDAP avec les interfaces de recherche ADSI suivantes :

  • Les interfaces ADO (ActiveX Data Object), qui sont des interfaces Automation qui utilisent OLE DB.
  • OLE DB, qui est un ensemble d’interfaces C/C++ pour interroger des bases de données.
  • IDirectorySearch, qui est l’interface C/C++ pour Active Directory.

Une chaîne de dialecte LDAP se compose de quatre parties séparées par des points-virgules (;).

  • Nom unique de base. Par exemple :

    <LDAP://DC=Fabrikam,DC=COM>
    
  • Filtres de recherche LDAP. Pour plus d’informations sur les filtres de recherche, consultez Syntaxe des filtres de recherche.

  • Nom complet LDAP des attributs à récupérer. Plusieurs attributs sont séparés par une virgule.

  • Spécifie l’étendue de la recherche. Les valeurs valides sont « base », « onelevel » et « subtree ». L’étendue spécifiée dans une chaîne de requête LDAP remplace toute étendue de recherche spécifiée par la propriété « SearchScope » de l’objet Command ADO.

Voici un exemple de code du dialecte LDAP dans ADSI qui recherche tous les objets de la sous-arborescence.

"<LDAP://DC=Fabrikam,DC=com>;(objectClass=*);AdsPath, cn;subTree"

Toutes les options de recherche (taille de page de recherche, par exemple) ne peuvent pas être exprimées dans le dialecte LDAP. Vous devez donc définir les options avant que l’exécution de la requête ne commence.

Exemple de code pour l’exécution d’une requête LDAP

L’exemple de code suivant montre comment utiliser une requête LDAP

Dim con As New Connection, rs As New Recordset
Dim adVariant
Dim i 'Used for counter
Dim j 'Used for counter
Dim Com As New Command
Dim strDomain As String
Dim strPassword As String
 
' Open a Connection object.
con.Provider = "ADsDSOObject"
con.Properties("ADSI Flag") = 1
con.Properties("User ID") = strDomain + "\" + strUserID
con.Properties("Password") = strPassword

con.Open "Active Directory Provider"
 
' Create a command object on this connection.
Set Com.ActiveConnection = con
 
' Set the query string.
Com.CommandText = "<LDAP://MyServer/DC=MyDomain,DC=Fabrikam,DC=com>;
     (objectClass=*);ADsPath, objectclass;base"
 
' Set search preferences.
Com.Properties("Page Size") = 1000
Com.Properties("Timeout") = 30 'seconds
 
' Execute the query.
Set rs = Com.Execute
 
' Navigate the record set.
rs.MoveFirst
While Not rs.EOF
    For i = 0 To rs.Fields.Count - 1
        If rs.Fields(i).Type = adVariant And Not (IsNull(rs.Fields(i).Value)) Then
            Debug.Print rs.Fields(i).Name, " = "
            For j = LBound(rs.Fields(i).Value) To UBound(rs.Fields(i).Value)
                Debug.Print rs.Fields(i).Value(j), " # "
            Next j
        Else
            Debug.Print rs.Fields(i).Name, " = ", rs.Fields(i).Value
        End If
    Next i
    rs.MoveNext
Wend
 
rs.MoveLast
Debug.Print "No. of rows = ", rs.RecordCount

Pour plus d’informations sur la syntaxe de requête, consultez Syntaxe du filtre de recherche.

Syntaxe du filtre de recherche

Dialecte SQL

Recherche avec l’interface IDirectorySearch

Recherche avec des objets de données ActiveX

Recherche avec OLE DB