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


IMAPITable::Restrict

Область применения: Outlook 2013 | Outlook 2016

Применяет фильтр к таблице, уменьшая набор строк только теми строками, которые соответствуют указанным условиям.

HRESULT Restrict(
LPSRestriction lpRestriction,
ULONG ulFlags
);

Параметры

lpRestriction

[в] Указатель на структуру SRestriction , определяющую условия фильтра. Передача NULL в параметре lpRestriction удаляет текущий фильтр.

ulFlags

[в] Битовая маска флагов, управляющая временем операции ограничения. Можно задать следующие флаги:

TBL_ASYNC

Запускает операцию асинхронно и возвращается до завершения операции.

TBL_BATCH

Откладывает оценку фильтра до тех пор, пока не потребуются данные в таблице.

Возвращаемое значение

S_OK

Фильтр успешно применен.

MAPI_E_BUSY

Выполняется другая операция, которая предотвращает запуск операции ограничения. Либо выполняющиеся операции должны быть разрешены к завершению, либо она должна быть остановлена.

MAPI_E_TOO_COMPLEX

Таблица не может выполнить операцию, так как конкретный фильтр, на который указывает параметр lpRestriction , слишком сложен.

Замечания

Метод IMAPITable::Restrict устанавливает ограничение или фильтр для таблицы. Если есть предыдущее ограничение, оно отбрасывается и применяется новое. Применение ограничения не влияет на базовые данные таблицы; он просто изменяет представление, ограничивая строки, которые можно извлечь, строками, содержащими данные, которые удовлетворяют ограничению.

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

Уведомления о строках таблицы, скрытых от просмотра вызовами Restrict , никогда не создаются.

Ограничение свойства для многозначного свойства работает так же, как ограничение на однозначное свойство. Многозначное свойство, используемое в ограничении свойств, должно иметь MVI_FLAG флаг. Если этот флаг не установлен, он обрабатывается как полностью упорядоченный кортеж. Сравнение двух многозначных столбцов сравнивает элементы столбцов по порядку, сообщая о связи столбцов при первом неравенстве. Равенство возвращается только в том случае, если сравниваемые столбцы содержат одинаковые значения в том же порядке. Если один столбец содержит меньше значений, чем другой, то сообщаемое отношение равно значению NULL к другому значению.

Дополнительные сведения об ограничениях см. в разделе Об ограничениях.

Примечание.

Если вы создаете динамические запросы для поиска данных на сервере, используйте метод FindRow вместо методов Restrict и QueryRows вместе. Метод Restrict создает кэшированное представление, которое используется для оценки всех сообщений, добавленных в базовую папку или измененных в ней. Если клиентское приложение использует метод Restrict для каждого динамического запроса, для каждого запроса будет создано кэшированное представление.

Примечания для вызывающих методов

Чтобы отменить текущее ограничение без создания нового, передайте null в lpRestriction.

Если выполняется другой асинхронный вызов таблицы, в результате чего параметр Restrict возвращает MAPI_E_BUSY, можно вызвать IMAPITable::Abort , чтобы остановить вызов.

Ограничение работает синхронно, если не задан один из флагов. Если задать флаг TBL_BATCH, параметр Ограничить откладывает оценку ограничения, если вы не запрашиваете данные. Если флаг TBL_ASYNC установлен, функция Restrictработает асинхронно, потенциально возвращая ее до завершения операции.

Все закладки для таблицы отбрасываются, когда выполняется вызов Restrict , а BOOKMARK_CURRENT, текущая позиция курсора, задается в начале таблицы.

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

Не ожидайте получать уведомление таблицы о строке, отфильтрованной из таблицы из-за ограничения.

Справочные материалы по MFCMAPI

Пример кода MFCMAPI указан в приведенной ниже таблице.

Файл Функция Comment
ContentsTableListCtrl.cpp
CContentsTableListCtrl::ApplyRestriction
MFCMAPI использует метод IMAPITable::Restrict для установки ограничения на таблицу.

См. также

IMAPITable::Abort

IMAPITable::FindRow

IMAPITable::GetRowCount

IMAPITable::QueryRows

SPropertyRestriction

IMAPITable : IUnknown

Mfcmapi (en) � �������� ������� ����