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 OLE DB.
- OLE DB, que é um conjunto de interfaces C/C++ para consultar bancos de dados.
- IDirectorySearch, que é a interface C/C++ para o Active Directory.
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.
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.