Platform SDK: Exchange 2000 Server |
[This is preliminary documentation and subject to change.]
The organizer of a meeting receives the responses to meeting requests from attendees. The organizer then needs to process the responses of each attendee to update their status. Because attendees can invite other attendees, a meeting organizer should be able to process responses from attendees the organizer did not invite.
When you call the ICalendarPart.GetUpdatedItem method, CDO searches your calendar folder for an existing meeting that matches a meeting in the calendar part. CDO builds an appointment object in memory that contains the latest information from the saved meeting and the new meeting. The response to your meeting request, (accepted, declined, tentative) is merged into the existing meeting. When you save the appointment object in memory using the Datasource.Save method, the meeting in your calendar folder contains the updated attendee status.
Meeting responses are calendar messages identified by the ICalendarPart.CalendarMethod value "REPLY."
The basic process for processing meeting responses is as follows:
The following code example checks the inbox of a specific user. It then opens all meeting responses and saves the updated attendee status. Finally, it deletes the calendar message from the inbox.
Dim InboxURL As String Dim CalendarURL As String Dim ItemURL As String Dim Rs As New ADODB.Recordset Dim Rec As New ADODB.Record Dim iCalMsg As New CalendarMessage Dim iCalPart As ICalendarPart Dim iAppt As Appointment Dim Index As Integer Dim ContentClass As String InboxURL = "file://./backofficestorage/" & DomainName & "/MBX/" & UserName & "/inbox/" CalendarURL = "file://./backofficestorage/" & DomainName & "/MBX/" & UserName & "/calendar/" 'Open the record set for the calendar messages in the inbox folder Rec.Open InboxURL Set Rs.ActiveConnection = Rec.ActiveConnection Rs.Source = "SELECT ""DAV:href"",""DAV:contentclass"" " & _ "FROM scope('shallow traversal of """ & InboxURL & """')" & _ "WHERE (""DAV:contentclass"" = 'urn:content-classes:calendarmessage')" Rs.Open , , , adLockOptimistic 'Enumerate the recordset and process each calendar message Rs.MoveFirst Do Until Rs.EOF 'Open the calendar message ItemURL = Rs.Fields(CdoDAV.cdoHref).Value iCalMsg.DataSource.Open ItemURL 'Get each calendar part For Index = 1 To iCalMsg.CalendarParts.Count Set iCalPart = iCalMsg.CalendarParts(Index) Set iAppt = iCalPart.GetUpdatedItem(CalendarURL) Select Case iCalPart.CalendarMethod Case "REPLY" 'Save the appointment iAppt.DataSource.Save Case Else 'See the other examples in this section End Select Next Index 'Delete the calendar message Rs.Delete Rs.MoveNext Loop