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:

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 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 esegue l'override di 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 (dimensioni della pagina di ricerca, ad esempio) 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

Nell'esempio di codice seguente viene illustrato 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 filtro di ricerca.

Sintassi filtro di ricerca

SQL dialetto

Ricerca con l'interfaccia IDirectorySearch

Ricerca con oggetti dati ActiveX

Ricerca con OLE DB