Compartilhar via


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:

  • As interfaces ActiveX Data Object (ADO), que são interfaces de Automação que usam o OLE DB.
  • OLE DB, que é um conjunto de interfaces C/C++ para consultar bancos de dados.
  • IDirectorySearch, que é a interface C/C++ do Active Directory.

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

  • Nome diferenciado de base. Por exemplo:

    <LDAP://DC=Fabrikam,DC=COM>
    
  • Filtros de pesquisa LDAP. Para obter mais informações sobre filtros de pesquisa, consulte de Sintaxe de 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 "subárvore". O escopo especificado em uma cadeia de caracteres de consulta LDAP substitui qualquer escopo de pesquisa especificado com a propriedade "SearchScope" do objeto comando ADO.

Veja a seguir 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 da consulta real.

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 da consulta, consulte Sintaxe de Filtro de Pesquisa.

de Sintaxe de Filtro de Pesquisa

dialeto SQL

Pesquisa com a interface IDirectorySearch

pesquisa com objetos de dados ActiveX

pesquisa com OLE DB