Traversing Folders with ADO
Traversing Folders with ADO
This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.
Visual Basic
Note The following example uses a file URL with the Exchange OLE DB (ExOLEDB) provider. The ExOLEDB provider also supports The HTTP: URL Scheme. Using The HTTP: URL Scheme allows both client and server applications to use a single URL scheme.
'Traversing folders with ADO '1.Create a new project in VB and Name it as project1.vbp '2. Add a form named form1.frm '3. Add a command button to the form name it as command1 '4. Add a list box to the form name it as list1 '5. Paste the code in the code window for the form form1 '6. Reference the project with CDO for Exchange 2000, ADO 2.5, and Active DS libraries '7. Run the project Private Sub Command1_Click() Dim oRec As ADODB.Record Dim sURL As String Dim sSQL As String Dim oRst As ADODB.Recordset Dim sHREF As String Dim sDomainName As String Dim sLocalPath As String Dim sMailBox As String Dim oADSysInfo As ADSystemInfo On Error GoTo ErrHandler Set oADSysInfo = CreateObject("AdSystemInfo") sDomainName = oADSysInfo.DomainDNSName sMailBox = "User1" 'specify a URL to the mailbox sLocalPath = "MBX/" & sMailBox Set oRec = CreateObject("ADODB.Record") Set oRst = CreateObject("ADODB.Recordset") sURL = "file://./backofficestorage/" & sDomainName & "/" & sLocalPath oRec.Open sURL If Err.Number = 0 Then 'create the SQL query for the recordset sSQL = "select " sSQL = sSQL & " ""urn:schemas:mailheader:content-class""" sSQL = sSQL & ", ""DAV:href""" sSQL = sSQL & ", ""DAV:displayname""" sSQL = sSQL & " from scope ('shallow traversal of " & Chr(34) sSQL = sSQL & sURL & """') " sSQL = sSQL & " WHERE ""DAV:ishidden"" = false" 'open the recordset, a list of folder and/or items oRst.Open sSQL, oRec.ActiveConnection List1.Clear List1.AddItem "Private Folders for " & sMailBox & ":" Do While Not oRst.EOF List1.AddItem " " & oRst.Fields("DAV:displayname") oRst.MoveNext Loop Else MsgBox "Could not open MailBox for : " & sMailBox End If oRst.Close ' Now for the public folders : oRec.Close Set oRec.ActiveConnection = Nothing sURL = "file://./backofficestorage/" & sDomainName & "/Public Folders" oRec.Open sURL 'create the SQL query for the recordset sSQL = "select " sSQL = sSQL & " ""urn:schemas:mailheader:content-class""" sSQL = sSQL & ", ""DAV:href""" sSQL = sSQL & ", ""DAV:displayname""" sSQL = sSQL & " from scope ('shallow traversal of " & Chr(34) sSQL = sSQL & sURL & """') " sSQL = sSQL & " WHERE ""DAV:ishidden"" = false" 'open the recordset, a list of folder and/or items oRst.Open sSQL, oRec.ActiveConnection List1.AddItem "Public Folders :" Do While Not oRst.EOF List1.AddItem " " & oRst.Fields("DAV:displayname") oRst.MoveNext Loop GoTo Ending ' Implement custom error handling here. ErrHandler: Debug.Print Str(Err.Number) + " " + Err.Description Err.Clear Ending: ' Clean up. oRec.Close oRst.Close Set oRec = Nothing Set oRst = Nothing End Sub
Send us your feedback about the Microsoft Exchange Server 2003 SDK.
Build: June 2007 (2007.618.1)
© 2003-2006 Microsoft Corporation. All rights reserved. Terms of use.