Dialecto LDAP

El dialecto LDAP es un formato para las instrucciones de consulta que usan la sintaxis del filtro de búsqueda LDAP. Use una instrucción de consulta LDAP con las siguientes interfaces de búsqueda ADSI:

Una cadena de dialecto LDAP consta de cuatro partes separadas por punto y coma (;).

  • Nombre distintivo base. Por ejemplo:

    <LDAP://DC=Fabrikam,DC=COM>
    
  • Filtros de búsqueda LDAP. Para obtener más información sobre los filtros de búsqueda, vea Sintaxis de filtro de búsqueda.

  • Nombre para mostrar LDAP de los atributos que se van a recuperar. Varios atributos están separados por una coma.

  • Especifica el ámbito de la búsqueda. Los valores válidos son "base", "onelevel" y "subárbol". El ámbito especificado en una cadena de consulta LDAP invalida cualquier ámbito de búsqueda especificado con la propiedad "SearchScope" del objeto Command de ADO.

A continuación se muestra un ejemplo de código del dialecto LDAP en ADSI que busca en todos los objetos del subárbol.

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

No todas las opciones de búsqueda (tamaño de página de búsqueda, por ejemplo) se pueden expresar en el dialecto LDAP, por lo que debe establecer las opciones antes de que se inicie la ejecución de la consulta real.

Código de ejemplo para realizar una consulta LDAP

En el ejemplo de código siguiente se muestra cómo usar una consulta 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

Para obtener más información sobre la sintaxis de consulta, consulte Sintaxis de filtro de búsqueda.

Sintaxis de filtro de búsqueda

Dialecto SQL

Buscar con la interfaz IDirectorySearch

Búsqueda con objetos de datos ActiveX

Búsqueda con OLE DB