You are currently offline, waiting for your internet to reconnect

How To Use ADO to Access Objects Through an ADSI LDAP Provider

This article was previously published under Q187529
This article has been archived. It is offered "as is" and will no longer be updated.
The Active Directory Service Interfaces (ADSI) LightweightDirectory Access Protocol (LDAP) provider implements OLE DB interfaces thatallow you to use ActiveX Data Objects (ADO) to access objects in LDAPcompliant directories. You must create an ADO connection object and set itsProvider property to "ADsDSOObject". You can specify any string, including"", as the connection string (first argument) of the ADO connectionobject's open method.

The connection object Execute method's CommandText (first object) is anLDAP query composed of four elements separated by semicolons, in thefollowing format:
  • server is the name (or IP address) of the server hosting the directory.
  • adsidn is the distinguished name (DN) of the starting point for your query expressed ADsPath format with "/" separators and the root of the namespace to the left. You can also use an X.500 style attributed name format with the relative distinguished names separated by commas and the root of the name space to the right.
  • 1dap filter is the LDAP filter string (see rfc2254).
  • attributescsv is a comma separated list of names of the attributes to be returned for each row in the recordset.
  • scope is either: base, onelevel, or subtree.
NOTE: rfc2253 specifies the LDAP syntaxes on which the ADSI LDAP syntax is based.

To return the ADsPath, class, and cn attributes of all the objects in allthe recipient containers in an Exchange server, you can use the followingCommandText (in URL format):
      LDAP:<//server/o=organization/ou=site/cn=recipients>;         (objectClass=*);ADsPath,objectClass,cn;subtree"				
or (in attributed name format):
     <LDAP://server/cn=recipients,ou=site,o=organization>, _         (objectClass=*);ADsPath,objectClass;subtree				
The following Visual Basic sample code illustrates this query:

Sample Code

  Dim conn As ADODB.Connection      Dim rs As ADODB.Recordset      Set conn = New ADODB.Connection      conn.Provider = "ADSDSOObject"      conn.Open "ADs Provider"      Set rs = conn.Execute( _             "<LDAP://server/o=organization/ou=site/cn=recipients>;" _            & "(objectClass=*);ADsPath,objectClass,cn;subtree")      While Not rs.EOF         Debug.Print rs.Fields(0).Value, rs.Fields(1).Value, _               rs.Fields(2).Value         rs.MoveNext      Wend      conn.Close				
For a listing and explanation of common LDAP RFCs, including RFC 2253 and RFC 2254, please see the following article in the Microsoft Knowledge Base:
221606 Common LDAP RFCs
For additional information, click the article number below to view the article in the Microsoft Knowledge Base:
275917 PRB: ADSI 2.5 and MDAC 2.6 Compatibility Issues

Article ID: 187529 - Last Review: 12/05/2015 08:46:27 - Revision: 1.2

  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Active Directory Service Interfaces 2.0
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • kbnosurvey kbarchive kbhowto kbmdacnosweep kbtophit KB187529
  • © 2015 Microsoft