Filtering and Viewing Calendars (CDOEX and ADO)
Topic Last Modified: 2006-06-12
Example
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.
' Filtering and viewing calendars using CDOEx and ADO
' This sample demonstrates how to filter and view the appointments from a Calendar folder using
' CDO, ADO, and ADSI.
' It opens the Calendar folder using an ADODB record. It filters the appointments
' to include the ones that meet the following selection criteria:
'
' - The status of the appointment is marked as Busy, and
' - The appointment occurs in between 12.25.1999 - 8:00:00 AM and 12.29.1999 - 8:00:00 AM, and
' - The appointment is a single appointment (that is, not part of a recurring appointment).
'
' At the end, the sample prints the subject, location, and attendees of
' each appointment item matching the selection criteria.
'
' Visual Basic Project Reference
' - Microsoft CDO for Exchange 2000 Library
' - Microsoft ActiveX Data Objects 2.5 Library
' - Active DS Type Library
Private Sub FilterAppointments(User1)
Dim CalendarURL As String
Dim ItemURL As String
Dim Rs As New ADODB.Recordset
Dim Rec As New ADODB.Record
Dim iAppt As New CDO.Appointment
Dim iAttendees As Object
Dim DebugStr As String
Dim DomainName As String
Dim info As New ADSystemInfo
' Get the domain name.
DomainName = info.DomainDNSName
' Construct the URL that will be used to reach the specified Calendar folder.
' Note: You can view a calendar folder belonging to someone else (or a public folder),
' as long as the mailbox of that user (or the public folder) resides in the local
' computer and you have sufficient permissions to view it.
' If the Calendar folder is a public folder, the CalendarURL string will look like the following:
' CalendarURL = "file://./backofficestorage/" & DomainName & "/public folders/" & "NameOfTheCalendarFolder"
CalendarURL = "file://./backofficestorage/" & DomainName & "/MBX/" & User1 & "/calendar/"
'Open a recordset for the items in the calendar folder.
Rec.Open CalendarURL
Set Rs.ActiveConnection = Rec.ActiveConnection
Rs.Source = "SELECT ""DAV:href"", " & _
" ""urn:schemas:calendar:busystatus"", " & _
" ""urn:schemas:calendar:instancetype"", " & _
" ""urn:schemas:calendar:dtstart"", " & _
" ""urn:schemas:calendar:dtend"" " & _
"FROM scope('shallow traversal of """ & CalendarURL & """') " & _
"WHERE (""urn:schemas:calendar:dtstart"" >= CAST(""1999-12-25T08:00:00Z"" as 'dateTime')) " & _
"AND (""urn:schemas:calendar:dtend"" <= CAST(""1999-12-29T08:00:00Z"" as 'dateTime'))" & _
"AND (""urn:schemas:calendar:busystatus"" = 'Busy')" & _
"AND (""urn:schemas:calendar:instancetype"" = 0)"
Rs.Open
If Not (Rs.EOF) Then
Rs.MoveFirst
DebugStr = ""
' Enumerate the recordset, printing some information about each item.
Do Until Rs.EOF
' Find the absolute uniform resource locator (URL) of each item.
ItemURL = Rs.Fields(CdoDAV.cdoHref).Value
' Open the appointment using its URL.
iAppt.DataSource.Open ItemURL
DebugStr = DebugStr & "Subject: " & iAppt.Subject & vbLf
DebugStr = DebugStr & "Start-End Time: " & iAppt.StartTime & " - " & iAppt.EndTime & vbLf
DebugStr = DebugStr & "Location: " & iAppt.Location & vbLf
DebugStr = DebugStr & "Attendees: "
' Find the attendees who are invited to each meeting.
Set iAttendees = iAppt.Attendees
For i = 1 To iAttendees.Count
DebugStr = DebugStr & iAttendees(i).DisplayName & " "
DebugStr = DebugStr & vbLf & vbLf
Rs.MoveNext
Loop
Debug.Print DebugStr
' No appointments were found that match the search criteria.
Else
Debug.Print "No Appointments found."
End If
End Sub