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.
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.