Dialetto LDAP
Il dialetto LDAP è un formato per le istruzioni di query che usano la sintassi del filtro di ricerca LDAP. Usare un'istruzione di query LDAP con le interfacce di ricerca ADSI seguenti:
- Interfacce ADO (ActiveX Data Object), ovvero interfacce di automazione che usano OLE DB.
- OLE DB, ovvero un set di interfacce C/C++ per l'esecuzione di query sui database.
- IDirectorySearch, ovvero l'interfaccia C/C++ per Active Directory.
Una stringa di dialetto LDAP è costituita da quattro parti separate da punti e virgola (;).
Nome distinto di base. Ad esempio:
<LDAP://DC=Fabrikam,DC=COM>
Filtri di ricerca LDAP. Per altre informazioni sui filtri di ricerca, vedere sintassi del filtro di ricerca.
Nome visualizzato LDAP degli attributi da recuperare. Più attributi sono separati da una virgola.
Specifica l'ambito della ricerca. I valori validi sono "base", "onelevel" e "subtree". L'ambito specificato in una stringa di query LDAP sostituisce qualsiasi ambito di ricerca specificato con la proprietà "SearchScope" dell'oggetto ADO Command.
Di seguito è riportato un esempio di codice del dialetto LDAP in ADSI che cerca tutti gli oggetti nel sottoalbero.
"<LDAP://DC=Fabrikam,DC=com>;(objectClass=*);AdsPath, cn;subTree"
Non tutte le opzioni di ricerca (ad esempio le dimensioni della pagina di ricerca) possono essere espresse nel dialetto LDAP, quindi è necessario impostare le opzioni prima dell'avvio effettivo dell'esecuzione della query.
Codice di esempio per l'esecuzione di una query LDAP
L'esempio di codice seguente illustra come usare una query 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
Per informazioni dettagliate sulla sintassi della query, vedere sintassi del filtro di ricerca.
Argomenti correlati