HOWTO: Using ADO to Access Objects Through ADSI LDAP Provider
ID: Q187529
|
The information in this article applies to:
-
Microsoft Visual Basic Professional and Enterprise Editions for Windows, versions 5.0, 6.0
-
Microsoft Active Directory Service Interfaces, versions 2.0, 2.5
-
ActiveX Data Objects (ADO), versions 1.5, 2.0, 2.1 SP2
SUMMARY
The Active Directory Service Interfaces (ADSI) Lightweight
Directory Access Protocol (LDAP) provider implements OLE DB interfaces that
allow you to use ActiveX Data Objects (ADO) to access objects in LDAP
compliant directories. You must create an ADO connection object and set its
Provider property to "ADsDSOObject". You can specify any string, including
"", as the connection string (first argument) of the ADO connection
object's open method.
The connection object Execute method's CommandText (first object) is an
LDAP query composed of four elements separated by semicolons, in the
following format:
<LDAP://server/adsidn>;ldapfilter;attributescsv;scope
where:
- 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 all
the recipient containers in an Exchange server, you can use the following
CommandText (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
MORE INFORMATION
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
REFERENCES
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:
Q221606 Common LDAP RFCs
Additional query words:
kbVBp500 kbSDKPlat kbADO kbADSI kbDSupport kbdse
Keywords : kbADO kbADSI kbVBp500 kbVBp600 kbGrpVBDB kbDSupport
Version : WINDOWS:1.5,2.0,2.1 SP2,5.0,6.0; winnt:2.0,2.5
Platform : WINDOWS winnt
Issue type : kbhowto