Compartir a través de


Crear una cita de periodicidad anual que usa un patrón YearNth

En este ejemplo se muestra cómo crear una cita para la cual el patrón de periodicidad anual es un día específico, como el primer lunes de junio.

Ejemplo

Nota:

El siguiente ejemplo de código es un fragmento de Programming Applications for Microsoft Office Outlook 2007 (Programación de aplicaciones para Microsoft Office Outlook 2007).

Si desea crear una cita anual que se repita un día específico de la semana durante un mes específico (por ejemplo, el primer lunes de junio), debe usar periodicidades YearNth. Para establecer una periodicidad YearNth, primero debe establecer la propiedad RecurrenceType del objeto RecurrencePattern en olRecursYearNth. Después tiene que establecer la propiedad DayOfWeekMask para especificar qué día de la semana se debe repetir la cita, y la propiedad Instance para especificar la periodicidad Nth del día de la semana especificado (por ejemplo, el tercer martes) durante un mes especificado para el patrón anual.

Cuando se trabaja con elementos de citas periódicas, debe liberar todas las referencias anteriores, obtener nuevas referencias al elemento de cita periódico antes de tener acceso o modificar el elemento y liberar estas referencias, tan pronto como termine y haya guardado los cambios. Este procedimiento se aplica al objeto periódico AppointmentItem y a cualquier objeto Exception o RecurrencePattern. Para liberar una referencia en Visual Basic, establezca el objeto existente en Nothing. En C#, liberar explícitamente la memoria para ese objeto.

Tenga en cuenta que incluso después de liberar la referencia e intentar obtener una nueva, si aún hay una referencia activa (retenida por otro complemento o Outlook) a uno de los objetos anteriores, la nueva referencia seguirá apuntando a una copia no actualizada del objeto. Por lo tanto, es importante liberar las referencias cuando termine con la cita periódica.

En el ejemplo de código siguiente, RecurringYearNthAppointment crea una cita con un patrón de periodicidad YearNth. En primer lugar, RecurringYearNthAppointment crea una cita periódica mediante la creación de un objeto AppointmentItem. Después obtiene el patrón de periodicidad de la cita usando el método GetRecurrencePattern(). Luego establece las siguientes propiedades de RecurrencePattern: RecurrenceType, DayOfWeekMask, MonthOfYear, Instance, Occurrences, Duration, PatternStartDate, StartTime y EndTime. La propiedad MonthOfYear puede tomar un valor numérico de 1 a 12, donde cada número representa el mes correspondiente. Una vez que estén establecidas las propiedades, RecurringYearNthAppointment guarda la cita y, después, la muestra con el patrón "Occurs the first Monday of June effective 6/1/2007 until 6/6/2016 from 2:00 PM to 5:00 PM".

Si usa Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente de la biblioteca de objetos de Microsoft Outlook 15.0 y especificar la variable de Outlook al importar el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción using no debe producirse directamente antes de las funciones en el ejemplo de código, pero debe agregarse antes de la declaración de clase pública. La siguiente línea de código muestra cómo realizar la importación y la asignación en C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void RecurringYearNthAppointment()
{
    Outlook.AppointmentItem appt = Application.CreateItem(
        Outlook.OlItemType.olAppointmentItem)
        as Outlook.AppointmentItem;
    appt.Subject = "Recurring YearNth Appointment";
    Outlook.RecurrencePattern pattern = appt.GetRecurrencePattern();
    pattern.RecurrenceType = Outlook.OlRecurrenceType.olRecursYearNth;
    pattern.DayOfWeekMask = Outlook.OlDaysOfWeek.olMonday;
    pattern.MonthOfYear = 6;
    pattern.Instance = 1;
    pattern.Occurrences = 10;
    pattern.Duration = 180;
    pattern.PatternStartDate = DateTime.Parse("6/1/2007");
    pattern.StartTime = DateTime.Parse("2:00:00 PM");
    pattern.EndTime = DateTime.Parse("5:00:00 PM");
    appt.Save();
    appt.Display(false);
}

Vea también