Compartilhar via


_Items.Find(String) Método

Definição

Localiza e retorna um objeto de item do Outlook que satisfaz o determinado Filter.

public:
 System::Object ^ Find(System::String ^ Filter);
public object Find (string Filter);
Public Function Find (Filter As String) As Object

Parâmetros

Filter
String

Uma sequência de caracteres que especifica os critérios aos quais o objeto retornado deve satisfazer.

Retornos

Um valor object que representa um item do Outlook se a chamada for bem-sucedida; retorna Nothing (uma referência nula (Nada no Visual Basic) em C#) se falhar.

Comentários

Para usar a pesquisa de indexação de conteúdo na Items coleção, use o Restrict(String) método. FindRow retornará um erro se Filter contiver palavras-chave de indexação de conteúdo. Para obter mais informações sobre palavras-chave de indexação de conteúdo, consulte Filtrando itens usando palavras-chave de consulta

O método retornará um erro com as seguintes propriedades no Filter:

BodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermissionLastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURL

Criando filtros para os métodos Localizar e Restringir

A sintaxe do filtro varia dependendo do tipo de campo sendo filtrado.

Cadeia de Caracteres (para campos Texto)

Ao pesquisar campos de texto, você pode usar um apóstrofo (') ou aspas duplas ("") para delimitar os valores que fazem parte do filtro. Por exemplo, todas as linhas a seguir funcionam corretamente quando o campo é do tipo String (cadeia de caracteres em C#):

sFilter = "[CompanyName] = 'Microsoft'"

sFilter = "[CompanyName] = ""Microsoft"""

sFilter = "[CompanyName] = " & Chr(34) & "Microsoft" & Chr(34)

In specifying a filter in a Jet or DASL query, if you use a pair of single quotes to delimit a string that is part of the filter, and the string contains another single quote or apostrophe, then add a single quote as an escape character before the single quote or apostrophe. Use a similar approach if you use a pair of double quotes to delimit a string. If the string contains a double quote, then add a double quote as an escape character before the double quote.

Por exemplo, na cadeia de caracteres de filtro DASL que filtra a propriedade Subject sendo igual à palavra não pode, toda a cadeia de caracteres de filtro é delimitada por um par de aspas duplas e a cadeia de caracteres inserida não pode ser delimitada por um par de aspas únicas. Há três caracteres que você precisa escapar nesta cadeia de caracteres de filtro: a cotação dupla inicial e a cotação dupla final para a referência de propriedade de http://schemas.microsoft.com/mapi/proptag/0x0037001f, e o apóstrofo na condição de valor da palavra não pode. A aplicação dos caracteres de escape apropriados permite expressar a cadeia de caracteres de filtro da seguinte forma:

filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'can't'"

Como alternativa, você pode usar a função chr(34) para representar aspas duplas (cujo valor de caractere ASCII é 34), que é usada como caractere de escape. A substituição chr(34) usada como caractere de escape de aspas duplas permite expressar o último exemplo desta forma:

filter = "@SQL= " & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001f" _

& Chr(34) & " = " & "'can't'"

O uso de aspas simples e duplas como caracteres de escape também é obrigatório nas consultas DASL com o operador ci_startswith ou ci_phrasematch. Por exemplo, a consulta a seguir executa uma correspondência de frase para can't no assunto da mensagem:

filter = "@SQL=" & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001E" _

& Chr(34) & " ci_phrasematch " & "'can't'"

Outro exemplo é uma cadeia de caracteres de filtro DASL que filtra para a propriedade Subject sendo igual às palavras o material certo, em que o material da palavra é fechado por aspas duplas. Nesse caso, você deve usar aspas duplas como escape da seguinte forma:

filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = "the right ""stuff""'"

A different set of escaping rules apply to a property reference for named properties that contain the space, single quote, double quote, or percent character. For more information, see Referencing Properties by Namespace.

Data

Embora datas e horas geralmente são armazenadas com um formato Date, Find e Restrict métodos exigem que a data e hora ser convertido em uma representação de cadeia de caracteres. Para certificar-se de que a data está formatada como Microsoft Outlook espera, use a função Format. O exemplo a seguir cria um filtro para localizar todos os contatos que foram modificados após 15 de janeiro de 1999 às 15:30.

sFilter = "[LastModificationTime] > '" & Format("15/15/99 15:30pm", "ddddd h:nn AMPM") & "'"

Operadores booleanos

Os operadores Boolean, TRUE/FALSE, YES/NO, ON/OFF e outros, não devem ser convertidos em uma sequência de caracteres. Por exemplo, para determinar se o diário está habilitado para contatos, você pode usar este filtro:

sFilter = "[Diário] = True"

Observação: se você usar aspas como delimitadores com campos boolianos, uma cadeia de caracteres vazia encontrará itens cujos campos são False e todas as cadeias de caracteres não vazias encontrarão itens cujos campos são True.

Keywords (ou Categories)

O campo de categorias é do tipo palavras-chave, que foi projetada para armazenar vários valores. Ao acessar programaticamente, o campo categorias se comporta como um campo de texto e a cadeia de caracteres deve corresponder exatamente. Valores na cadeia de texto são separados por uma vírgula e um espaço. Geralmente, isso significa que você não pode usar os métodos Find e Restrict em um campo de palavras-chave se ele contiver mais de um valor. Por exemplo, se você tiver um contato na categoria Business e um contato nas categorias Social e corporativos, você não pode usar facilmente os métodos Find e Restrict para recuperar todos os itens que estão na categoria comercial. Em vez disso, você pode executar um loop em todos os contatos na pasta e use a função Instr para testar se a cadeia de caracteres "Business" está contida em todo o campo de palavras-chave.

Observação: uma possível exceção é se você limitar o campo Categorias a dois ou um número baixo de valores. Em seguida, você pode usar os métodos Find e Restrict com o operador lógico OR para recuperar todos os contatos comerciais. Por exemplo (no pseudocódigo): "Business" ou "Comercial, pessoal" ou "Pessoal, Business". Cadeias de caracteres de categoria não diferenciam maiúsculas de minúsculas.

Número inteiro

Você pode procurar por campos Integer com ou sem aspas como delimitadores. Os filtros a seguir localizarão contatos que foram criados com o Outlook 2000:

sFilter = "[OutlookInternalVersion] = 92711"

sFilter = "[OutlookInternalVersion] = '92711'"

Usando variáveis como parte do filtro

Como o exemplo do método Restrict ilustra, você pode usar valores de variáveis como parte do filtro. O exemplo de código do Microsoft Visual Basic a seguir ilustra a sintaxe que usa variáveis como parte do filtro.

sFullName = "Dan Wilson"

Essa abordagem usa Chr(34) para delimitar o valor: sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34)

Essa abordagem usa aspas duplas para delimitar o valor: sFilter = "[FullName] = """ & sFullName & """"

Usando operadores lógicos como parte do filtro

Os operadores lógicos permitidos são AND, OR e não. A seguir estão as variações da cláusula para o método Restrict, para que você possa especificar vários critérios.

OR: o código a seguir retorna todos os itens de contato que têm como categoria Comercial ou Pessoal.

sFilter = "[Categories] = 'Personal' Or [Categories] = 'Business'"

AND: o código a seguir recupera todos os contatos pessoais que trabalham na Microsoft.

sFilter = "[Categories] = 'Personal' And [CompanyName] = 'Microsoft'"

NOT: o código a seguir recupera todos os contatos pessoais que não trabalham na Microsoft.

sFilter = "[Categories] = 'Personal' And Not([CompanyName] = 'Microsoft')"

Observações adicionais

Se você está tentando usar os métodos Find ou Restrict com campos definidos pelo usuário, os campos devem ser definidos na pasta, caso contrário, ocorrerá um erro. Não é possível executar uma operação "contém". Por exemplo, você não pode usar Find ou Restrict para procurar itens que tenham uma determinada palavra no campo assunto. Em vez disso, você pode usar o método AdvancedSearch ou você pode executar um loop em todos os itens na pasta e use a função InStr para realizar uma pesquisa dentro de um campo. Você pode usar o método Restrict para pesquisar itens que começam em um determinado intervalo de caracteres. Por exemplo, para procurar todos os contatos com o último nome começando com a letra M, use este filtro:

sFilter = "[LastName] > 'LZZZ' e [LastName] < 'N'"

Aplica-se a