Compartir a través de


_Items.Find(String) Método

Definición

Busca y devuelve un objeto de elemento de Outlook que satisface el especificado 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

Una cadena que especifica los criterios que debe cumplir el objeto devuelto.

Devoluciones

Valor de objeto que representa un elemento de Outlook si la llamada se realiza correctamente; devuelve Nothing (una referencia nula (Nothing en Visual Basic) en C#) si se produce un error.

Comentarios

Para usar la búsqueda de indexación de contenido en la Items colección, use el Restrict(String) método . FindRow devolverá un error si Filter contiene palabras clave de indexación de contenido. Para obtener más información sobre las palabras clave de indexación de contenido, consulte Filtrado de elementos mediante palabras clave de consulta.

El método devolverá un error con las siguientes propiedades en Filter:

BodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermissionLastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURL

Crear filtros para los métodos Find y Restrict

La sintaxis del filtro varía según el tipo de campo al que se aplique.

Cadena (para campos de texto)

Al buscar campos de texto, se pueden usar un apóstrofo (') o comillas dobles ("") para delimitar los valores que forman parte del filtro. Por ejemplo, todas las líneas siguientes funcionan correctamente cuando el campo es de tipo String (cadena en C#):

sFilter = "[CompanyName] = 'Microsoft'"

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

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

Al especificar un filtro en una consulta Jet o DASL, si usa un par de comillas simples para delimitar una cadena que forma parte del filtro, y la cadena contiene otra comilla simple o apóstrofo, agregue una comilla simple como carácter de escape antes de la comilla simple o el apóstrofo. Use un enfoque similar si usa un par de comillas dobles para deliminar una cadena. Si la cadena contiene comillas dobles, agregue comillas de este tipo como caracteres de escape antes de ellas.

Por ejemplo, en la cadena de filtro DASL que filtra para que la propiedad Subject sea igual a la palabra no puede, toda la cadena de filtro está delimitada por un par de comillas dobles y la cadena incrustada no se puede delimitar por un par de comillas simples. Hay tres caracteres que debe escape en esta cadena de filtro: la comilla doble inicial y la comilla doble final para la referencia de propiedad de http://schemas.microsoft.com/mapi/proptag/0x0037001f, y el apóstrofo en la condición de valor de la palabra no puede. Al aplicar los caracteres de escape apropiados, puede expresar la cadena del filtro de la siguiente manera:

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

Asimismo, puede usar la función chr(34) para representar la comilla doble (cuyo valor de carácter ASCII es 34) que se usa como carácter de escape. Al usar la sustitución chr(34) para un carácter de escape de comilla doble, puede expresar el último ejemplo de la siguiente manera:

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

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

También se requiere escapar caracteres de comilla simple y doble para las consultas DASL con los operadores ci_startswith o ci_phrasematch. Por ejemplo, la siguiente consulta realiza una consulta de coincidencia de frases para can't en el tema del mensaje:

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

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

Otro ejemplo es una cadena de filtro DASL que filtra para que la propiedad Subject sea igual a las palabras las cosas correctas, donde la palabra cosas se incluye entre comillas dobles. En este caso, debe escapar las comillas dobles que encierran la palabra de la siguiente manera:

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

Un conjunto diferente de reglas de escape se aplican a una referencia de propiedad para propiedades con nombre que contienen los caracteres de espacio, comilla simple, comilla doble o porcentaje. Para obtener más información, vea Referencia a propiedades por espacio de nombres.

Fecha

Aunque las fechas y horas se almacenan normalmente con un formato Date, los métodos Find y Restrict requieren que la fecha y hora se conviertan en una representación de cadena. Para asegurarse de que la fecha tiene el formato que Microsoft Outlook espera, use la función Format. El siguiente ejemplo crea un filtro para encontrar todos los contactos que se modificaron después del 15 de enero de 1999 a las 3:30 p. m.

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

Operadores booleanos

Los operadores de tipo Boolean, TRUE/FALSE, YES/NO, ON/OFF, etc., no deben convertirse en una cadena. Por ejemplo, para determinar si está habilitada la opción de diario para los contactos, puede utilizar este filtro:

sFilter = "[Journal] = True"

Nota: Si usa comillas como delimitadores con campos booleanos, una cadena vacía encontrará elementos cuyos campos son False y todas las cadenas no vacías encontrarán elementos cuyos campos son True.

Palabras clave (o categorías)

El campo Categorías es de palabras clave de tipo, que está diseñado para contener varios valores. Cuando se accede mediante programación, el campo categorías se comporta como un campo de texto y la cadena debe coincidir exactamente. Los valores de la cadena de texto se separan mediante una coma y un espacio. Normalmente, esto significa que no puede usar los métodos Find y Restrict en un campo de palabra clave si contiene más de un valor. Por ejemplo, si tiene un contacto en la categoría Business y un contacto en las categorías Business y Social, no podrá usar fácilmente los métodos Find y Restrict para recuperar todos los elementos de la categoría Business. En su lugar, puede recorrer todos los contactos en la carpeta y usar la función Instr para comprobar si la cadena "Business" está en todo el campo de palabras clave.

Nota: Una posible excepción es si limita el campo Categorías a dos o un número bajo de valores. A continuación, puede usar los métodos Find y Restrict con el operador lógico OR para recuperar todos los contactos empresariales. Por ejemplo (en pseudocódigo): "Business" OR "Business, Personal" OR "Personal, Business." Las cadenas de categoría no distinguen entre mayúsculas y minúsculas.

Entero

Puede buscar campos enteros con o sin comillas como delimitadores. Los filtros siguientes buscan los contactos creados con Outlook 2000:

sFilter = "[OutlookInternalVersion] = 92711"

sFilter = "[OutlookInternalVersion] = '92711'"

Uso de variables como parte del filtro

Como se muestra en el ejemplo del método Restrict, puede usar valores de variables como parte del filtro. En el siguiente ejemplo de código de Microsoft Visual Basic se muestra la sintaxis que usa variables como parte del filtro.

sFullName = "Dan Wilson"

Este enfoque usa Chr(34) para delimitar el valor: sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34)

Este enfoque usa comillas dobles para delimitar el valor: sFilter = "[FullName] = """ & sFullName & """"

Uso de operadores lógicos como parte del filtro

Los operadores lógicos permitidos son AND, OR y NOT. A continuación se muestran variaciones de la cláusula para el método Restrict, por lo que puede especificar varios criterios.

OR: el siguiente código devuelve todos los elementos de contacto cuya categoría sea Business o Personal.

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

AND: el siguiente código recupera todos los contactos personales que trabajan en Microsoft.

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

NOT: el siguiente código recupera todos los contactos personales que no trabajan en Microsoft.

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

Notas adicionales

Si intenta usar los métodos Find o Restrict con campos definidos por el usuario, los campos deben definirse en la carpeta; de lo contrario, se producirá un error. No hay ninguna manera de realizar una operación "contiene". Por ejemplo, no puede usar Find ni Restrict para buscar elementos que tienen una palabra concreta en el campo Subject. En su lugar, puede usar el método AdvancedSearch, o bien puede recorrer todos los elementos de la carpeta y usar la función InStr para realizar una búsqueda dentro de un campo. Puede usar el método Restrict para buscar elementos que comiencen por un intervalo determinado de caracteres. Por ejemplo, para buscar todos los contactos cuyo apellido empiece por la letra M, utilice este filtro:

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

Se aplica a