Dialeto LDAP

O dialeto LDAP é um formato para instruções de consulta que usam a sintaxe de filtro de pesquisa LDAP. Use uma instrução de consulta LDAP com as seguintes interfaces de pesquisa ADSI:

Uma cadeia de caracteres de dialeto LDAP consiste em quatro partes separadas por ponto-e-vírgula (;).

  • Nome distinto da base. Por exemplo:

    <LDAP://DC=Fabrikam,DC=COM>
    
  • Filtros de pesquisa LDAP. Para obter mais informações sobre filtros de pesquisa, consulte Sintaxe do filtro de pesquisa.

  • O nome de exibição LDAP dos atributos a serem recuperados. Vários atributos são separados por uma vírgula.

  • Especifica o escopo da pesquisa. Os valores válidos são "base", "onelevel" e "subtree". O escopo especificado em uma cadeia de caracteres de consulta LDAP substitui qualquer escopo de pesquisa especificado com a propriedade "SearchScope" do objeto Command do ADO.

A seguir está um exemplo de código do dialeto LDAP no ADSI que pesquisa todos os objetos na subárvore.

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

Nem todas as opções de pesquisa (tamanho da página de pesquisa, por exemplo) podem ser expressas no dialeto LDAP, portanto, você deve definir as opções antes do início da execução real da consulta.

Código de exemplo para executar uma consulta LDAP

O exemplo de código a seguir mostra como usar uma 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 obter detalhes sobre a sintaxe de consulta, consulte Sintaxe do filtro de pesquisa.

Sintaxe do filtro de pesquisa

Dialeto SQL

Pesquisando com a interface IDirectorySearch

Pesquisando com objetos de dados ActiveX

Pesquisando com OLE DB