Поделиться через


Фильтрация и отображение элементов папки "Входящие", измененных в прошлом месяце

В этом примере показано, как фильтровать и отображать элементы папки "Входящие", которые были изменены в прошлом месяце.

Пример

Примечание.

Приведенный ниже пример кода представляет собой фрагмент из книги Программирование приложений для Microsoft Office Outlook 2007.

Язык запросов DASL основан на реализации DASL Microsoft Exchange в Outlook. Его можно использовать для возвращения результатов на основе свойств для поисков на уровне элементов в данных папки, например представленных объектом Table. Фильтры DASL поддерживают сравнение строк, в том числе сопоставление эквивалентности, префиксов, фраз и подстрок, с помощью оператора равенства (=). С помощью запросов DASL можно выполнять сравнение и фильтрацию по дате и времени.

Поскольку в запросах DASL сравнение по значению DateTime всегда выполняется по стандартному времени по Гринвичу (UTC), для правильного выполнения запроса необходимо преобразовать время местного часового пояса во время по стандарту UTC. Также необходимо преобразовать значение DateTime в строковое представление, поскольку фильтры DASL поддерживают сравнение строк. Преобразование значения DateTime можно выполнить двумя способами: с помощью метода LocalTimeToUTC(Object) объекта Row или с помощью соответствующего макроса Outlook DateTime.

В следующей строке кода показано использование метода LocalTimeToUTC для преобразования значения свойства LastModificationTime (столбец по умолчанию во всех объектах Item) в формат UTC.

DateTime modified = nextRow.LocalTimeUTC(“LastModificationTime”);

В следующей таблице перечислены макросы DateTime, обеспечивающие возврат отфильтрованных строк, для которых выполнено сравнение заданного свойства DateTime с указанными относительной датой или диапазоном дат в формате UTC. Свойство SchemaName представляет любое допустимое свойство типа DateTime, ссылка на которое указывается в пространстве имен.

Макрос

Синтаксис

Описание

today

%today(“SchemaName”)%

Ограничение элементами со значением свойства SchemaName, соответствующим сегодняшней дате.

tomorrow

%tomorrow(“SchemaName”)%

Ограничение элементами со значением свойства SchemaName, соответствующим завтрашней дате.

yesterday

%yesterday(“SchemaName”)%

Ограничение элементами со значением свойства SchemaName, соответствующим вчерашней дате.

next7days

%next7days(“SchemaName”)%

Ограничение элементами, для которых значения свойства SchemaName лежат в диапазоне следующих семи дней.

last7days

%last7days(“SchemaName”)%

Ограничение элементами, для которых значения свойства SchemaName лежат в диапазоне прошедших семи дней.

nextweek

%nextweek(“SchemaName”)%

Ограничение элементами, для которых значения свойства SchemaName лежат в диапазоне следующей недели.

thisweek

%thisweek(“SchemaName”)%

Ограничение элементами, для которых значения свойства SchemaName лежат в диапазоне текущей недели.

lastweek

%lastweek(“SchemaName”)%

Ограничение элементами, для которых значения свойства SchemaName лежат в диапазоне прошлой недели.

nextmonth

%nextmonth(“SchemaName”)%

Ограничение элементами, для которых значения свойства SchemaName лежат в диапазоне следующего месяца.

thismonth

%thismonth(“SchemaName”)%

Ограничение элементами, для которых значения свойства SchemaName лежат в диапазоне текущего месяца.

lastmonth

%lastmonth(“SchemaName”)%

Ограничение элементами, для которых значения свойства SchemaName лежат в диапазоне прошлого месяца.

В следующем примере в процедуре DemoDASLDateMacro создается запрос DASL, в котором используется макрос lastmonthDateTime для фильтрации элементов в папке "Входящие" пользователя, измененных в прошлом месяце. Затем создается объект Table с этим фильтром и выполняется перечисление и отображение строк в ограниченном объекте Table.

Если вы используете Visual Studio для тестирования этого примера кода, сначала добавьте ссылку на компонент Microsoft Outlook 15.0 Object Library и задайте переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция using не должна находиться непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующей строке кода показано, как выполнить импорт и назначение в C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void DemoDASLDateMacro()
{
    string filter = "@SQL=" + "%lastmonth(" + "\"" +
        "DAV:getlastmodified" + "\"" + ")%";
    Outlook.Table table = Application.Session.GetDefaultFolder(
        Outlook.OlDefaultFolders.olFolderInbox).GetTable(
        filter, Outlook.OlTableContents.olUserItems);
    while (!table.EndOfTable)
    {
        Outlook.Row row = table.GetNextRow();
        Debug.WriteLine(row["Subject"]);
    }
}

См. также