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:
- Las interfaces del objeto de datos ActiveX (ADO), que son interfaces de automatización que usan OLE DB.
- OLE DB, que es un conjunto de interfaces de C/C++ para consultar bases de datos.
- IDirectorySearch, que es la interfaz de C/C++ para Active Directory.
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.
Temas relacionados