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 для установки ограничения на таблицу. |