_Items.Find(String) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Находит и возвращает объект элемента Outlook, удовлетворяющий заданному Filter
объекту .
public:
System::Object ^ Find(System::String ^ Filter);
public object Find (string Filter);
Public Function Find (Filter As String) As Object
Параметры
- Filter
- String
Строка, указывающая условия, которым должен соответствовать возвращаемый объект.
Возвращаемое значение
Значение Object, представляющее элемент Outlook, если вызов выполнен успешно; возвращает значение Nothing (пустая ссылка (Nothing в Visual Basic) в C#) в случае сбоя.
Комментарии
Чтобы использовать поиск по индексации содержимого Items в коллекции, используйте Restrict(String) метод . Функция FindRow вернет ошибку, если Filter
содержит ключевые слова индексирования контента. Дополнительные сведения о ключевых словах индексирования контента см. в статье Фильтрация элементов с помощью ключевых слов запроса.
Метод вернет ошибку со следующими свойствами в :Filter
BodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermission | LastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURL |
Создание фильтров для методов поиска и ограничения
Синтаксис фильтра зависит от типа поля, по которого выполняется фильтрация.
Строка (для текстовых полей)
При поиске в текстовых полях можно использовать апостроф (') или двойные кавычки (""), чтобы разделить значения, входящие в фильтр. Например, все следующие строки работают правильно, если поле имеет тип String (строка в C#):
sFilter = "[CompanyName] = "Microsoft""
sFilter = "[CompanyName] = ""Microsoft""
sFilter = "[CompanyName] = " & Chr(34) & "Microsoft" & Chr(34)
Если при указании фильтра в запросе Jet или DASL используется пара одинарных кавычек для разделения строки, которая является частью фильтра, а строка содержит еще одну кавычку или апостроф, добавьте одну кавычку в качестве escape-символа перед одной кавычками или апострофом. Используйте аналогичный подход, если для разделения строки используется пара двойных кавычек. Если строка содержит двойную кавычку, добавьте двойную кавычку в качестве escape-символа перед двойной кавычками.
Например, в строке фильтра DASL, которая фильтрует свойство Subject , равное слову , не может, вся строка фильтра разделяется парой двойных кавычек, а внедренная строка не может быть разделена парой одинарных кавычек. В этой строке фильтра необходимо экранировать три символа: начальная двойная кавычка и конечная двойная кавычка для ссылки на http://schemas.microsoft.com/mapi/proptag/0x0037001fсвойство , а апостроф в условии значения для слова не может. Применив соответствующие escape-символы, можно выразить строку фильтра следующим образом:
filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = "не может"
Кроме того, можно использовать функцию chr(34) для представления двойной кавычки (значение символа ASCII — 34), которая используется в качестве escape-символа. Используя подстановку chr(34) для escape-символа с двойными кавычками, можно выразить последний пример следующим образом:
filter = "@SQL= " & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001f" _
& Chr(34) & " = " & "не может"
Экранирование символов в одиночных и двойных кавычках также требуется для запросов DASL с операторами ci_startswith или ci_phrasematch . Например, следующий запрос выполняет запрос на совпадение фраз для не может в теме сообщения:
filter = "@SQL=" & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001E" _
& Chr(34) & "ci_phrasematch " & "не может"
Другим примером является строка фильтра DASL, которая фильтрует свойство Subject , равное слову , где слово stuff заключено в двойные кавычки. В этом случае необходимо экранировать вложенные двойные кавычки следующим образом:
filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'the right ""stuff"'"
Другой набор правил экранирования применяется к ссылке на свойство для именованных свойств, содержащих пробел, одну кавычку, двойную кавычку или символ процента. Дополнительные сведения см. в разделе Ссылки на свойства по пространству имен.
Date
Хотя даты и время обычно хранятся в формате даты, методы Find и Restrict требуют преобразования даты и времени в строковое представление. Чтобы убедиться, что дата отформатирована так, как ожидается в Microsoft Outlook, используйте функцию Формат. В следующем примере создается фильтр для поиска всех контактов, которые были изменены после 15 января 1999 г. в 3:30 вечера.
sFilter = "[LastModificationTime] > '" & Format("15.01.99 3:30pm", "ddddd h:nn AMPM") & "'"
Логические операторы
Логические операторы, TRUE/FALSE, ДА/НЕТ, ON/OFF и т. д., не следует преобразовывать в строку. Например, чтобы определить, включено ли ведение журнала для контактов, можно использовать следующий фильтр:
sFilter = "[Журнал] = True"
Примечание. Если вы используете кавычки в качестве разделителей с логическими полями, то пустая строка будет находить элементы, поля которых имеют значение False, а все непустые строки будут находить элементы с полями True.
Ключевые слова (или категории)
Поле Категории содержит ключевые слова типа, которое предназначено для хранения нескольких значений. При программном доступе к нему поле Категории ведет себя как текстовое поле, и строка должна точно соответствовать. Значения в текстовой строке разделяются запятой и пробелом. Обычно это означает, что нельзя использовать методы Find и Restrict в поле ключевых слов, если оно содержит несколько значений. Например, если у вас есть один контакт в категории "Бизнес" и один контакт в категориях "Бизнес" и "Социальные сети", вы не можете легко использовать методы Поиска и ограничения для получения всех элементов, которые находятся в категории "Бизнес". Вместо этого можно выполнить цикл по всем контактам в папке и использовать функцию Instr, чтобы проверить, содержится ли строка "Бизнес" во всем поле ключевых слов.
Примечание. Возможное исключение — если поле "Категории" ограничено двумя или небольшим количеством значений. Затем можно использовать методы Find и Restrict с логическим оператором OR, чтобы получить все бизнес-контакты. Например (в псевдокоде): "Бизнес" ИЛИ "Бизнес, Личное" или "Личное, Бизнес". В строках категорий регистр не учитывается.
Integer
Можно искать целочисленные поля с кавычками или без в качестве разделителей. Следующие фильтры помогут найти контакты, созданные с помощью Outlook 2000:
sFilter = "[OutlookInternalVersion] = 92711"
sFilter = "[OutlookInternalVersion] = '92711'"
Использование переменных в составе фильтра
Как показано в примере метода Restrict, значения из переменных можно использовать в составе фильтра. В следующем примере кода Microsoft Visual Basic показан синтаксис, в котором переменные используются в качестве части фильтра.
sFullName = "Дэн Уилсон"
Этот подход использует Chr(34) для разделения значения: sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34)
Этот подход использует двойные кавычки для разделения значения: sFilter = "[FullName] = """ & sFullName & """"
Использование логических операторов в составе фильтра
Допустимые логические операторы: AND, OR и NOT. Ниже приведены варианты предложения для метода Restrict, поэтому можно указать несколько условий.
ИЛИ. Следующий код возвращает все контактные элементы, у которых в качестве категории "Бизнес" или "Личные".
sFilter = "[Categories] = "Personal" или [Categories] = "Business"
И. Следующий код извлекает всех личных контактов, работающих в корпорации Майкрософт.
sFilter = "[Категории] = "Personal" и [CompanyName] = "Microsoft"
НЕТ. Следующий код извлекает все личные контакты, которые не работают в Корпорации Майкрософт.
sFilter = "[Категории] = "Personal" and Not([CompanyName] = "Microsoft")"
Дополнительные примечания
Если вы пытаетесь использовать методы Find или Restrict с определяемыми пользователем полями, поля должны быть определены в папке, в противном случае возникнет ошибка. Нет способа выполнить операцию "contains". Например, нельзя использовать функцию "Найти" или "Ограничить" для поиска элементов с определенным словом в поле "Тема". Вместо этого можно использовать метод AdvancedSearch или выполнить цикл по всем элементам в папке и использовать функцию InStr для поиска в поле. Метод Restrict можно использовать для поиска элементов, которые начинаются с определенного диапазона символов. Например, чтобы найти все контакты с фамилией, начинавшейся с буквы M, используйте следующий фильтр:
sFilter = "[LastName] > 'LZZZ" и [LastName] < 'N'"