Compartir a través de


_Items.Restrict(String) Método

Definición

Aplica un filtro a la Items colección y devuelve una nueva colección que contiene todos los elementos del original que coinciden con el filtro.

public:
 Microsoft::Office::Interop::Outlook::Items ^ Restrict(System::String ^ Filter);
public Microsoft.Office.Interop.Outlook.Items Restrict (string Filter);
Public Function Restrict (Filter As String) As Items

Parámetros

Filter
String

Una expresión de cadena de filtro para aplicar. Para obtener más información, consulte el Find(String) método .

Devoluciones

Colección Items que representa los elementos de la colección Items original que coinciden con el filtro.

Comentarios

Este método es una alternativa al uso del Find(String) método o FindNext() método para recorrer en iteración elementos específicos dentro de una colección. Los métodos Find o FindNext son más rápidos que un filtro si hay un número pequeño de elementos. El método Restrict es mucho más rápido si hay un gran número de elementos en la colección, especialmente si se espera que solo unos pocos elementos se encuentren en una colección grande.

Nota: Si usa campos definidos por el usuario como parte de una cláusula Find o Restrict , los campos definidos por el usuario deben existir en la carpeta . En caso contrario, el código generará un error que indica que el campo es desconocido. Puede agregar un campo a una carpeta mostrando el Selector de campos y haciendo clic en Nuevo.

Este método no se puede usar y producirá un error con las propiedades siguientes:

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, puede 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 formato de fecha, los métodos Find y Restrict requieren la conversión de la fecha y la hora 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. Entonces, puede usar los métodos Find y Restrict con el operador lógico OR para recuperar todos los contactos de la categoría Business. Por ejemplo (en pseudocódigo): "Business" O "Business, Personal" O "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 muestra 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 para que pueda 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 quiere usar los métodos Find o Restrict con campos definidos por el usuario, éstos se deben definir en la carpeta. En caso 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 AdvancedSearch(String, Object, Object, Object) método o puede recorrer en bucle 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