| Platform SDK: Exchange 2000 Server |
[This is preliminary documentation and subject to change.]
There are two ways to process exceptions in recurring meetings. If the meeting does not contain exceptions with a RecurrenceIDRange property value of "ThisAndFuture" or "ThisAndPrior," you can process each exception exactly once. This is an efficient way to process exceptions.
If the meeting contains "ThisAndFuture" or "ThisAndPrior" exceptions, you need to loop through the exceptions multiple times. This is less efficient.
The following code example works for exceptions that do not contain "ThisAndFuture" or "ThisAndPrior" values.
Dim recurid As Date
Dim obExAppt As CDO.Appointment
Dim obReq As CDO.CalendarMessage
Dim obEx As CDO.IException
For Each obEx In obAppt.Exceptions
'To make sure we process next exception if we can't process this one
On Error GoTo NextException
If obEx.Type = "Modify" Then
recurid = obEx.RecurrenceID
'Found an exception: process it
Set obExAppt = obAppt.GetFirstInstance(recurid, recurid)
Set obReq = obExAppt.CreateRequest ' OR Invite OR Cancel, etc.
obReq.Message.Send
End If
NextException:
End
The following code example works for exceptions that contain "ThisAndFuture" or "ThisAndPrior" values.
While (1)
On Error GoTo NextInstance
obExAppt = obAppt.GetNextInstance
If obExAppt.Fields("urn:schemas:calendar:instancetype") = cdoException Then
Found an exception: process it
Set obExAppt = obAppt.GetFirstInstance(recurid, recurid)
Set obReq = obExAppt.CreateRequest ' OR Invite OR Cancel, etc.
obReq.Message.Send
End If
NextInstance:
'Check for err.Number = DISP_E_BADINDEX: 0x8002000b (winerror.h)
If Err.Number = 2147614731# Then GoTo Quit
End
Quit: