Partager via


_Items.Restrict(String) Méthode

Définition

Applique un filtre à la Items collection, en renvoyant une nouvelle collection contenant tous les éléments de l’original qui correspondent au filtre.

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

Paramètres

Filter
String

Expression de filtre du type Chaîne à appliquer. Pour plus d’informations, consultez la Find(String) méthode .

Retours

Collection Items qui représente les éléments de la collection Items d’origine qui correspondent au filtre.

Remarques

Cette méthode est une alternative à l’utilisation de la méthode ou FindNext() de la Find(String) méthode pour itérer sur des éléments spécifiques au sein d’une collection. Les méthodes Find et FindNext sont plus rapides que le filtrage si le nombre d'élément est peu élevé. La méthode Restrict est beaucoup plus rapide si la collection comporte de nombreux éléments et particulièrement, si seuls quelques éléments doivent être renvoyés.

Remarque : Si vous utilisez des champs définis par l’utilisateur dans le cadre d’une clause Find ou Restrict , les champs définis par l’utilisateur doivent exister dans le dossier. Si ce n'est pas le cas, le code générera un message d'erreur indiquant que ces champs sont inconnus. Pour ajouter un champ à un dossier, il suffit d'afficher le sélecteur de champs et de cliquer sur Nouveau.

Cette méthode ne peut pas être utilisée et génère une erreur avec les propriétés suivantes :

BodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermissionLastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURL

Création de filtre pour les méthodes Rechercher et Restreindre

La syntaxe du filtre varie selon le type de champ que vous filtrez.

String (pour les champs de texte)

Lorsque vous recherchez des champs Texte, vous pouvez utiliser une apostrophe (') ou des guillemets doubles («  ») pour délimiter les valeurs qui font partie du filtre. Par exemple, toutes les lignes suivantes fonctionnent correctement lorsque le champ est de type String (chaîne en C#) :

sFilter = « [CompanyName] = 'Microsoft' »

sFilter = « [CompanyName] = « "Microsoft"" »

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

Lors de la spécification d’un filtre dans une requête Jet ou DASL, si vous utilisez une paire d’apostrophes simples pour délimiter une chaîne qui fait partie du filtre et que la chaîne contient une autre apostrophe, vous devez ajouter une apostrophe simple en tant que caractère d’échappement devant l’apostrophe simple. Utilisez une approche similaire si vous utilisez une paire de guillemets doubles pour délimiter une chaîne. Si la chaîne contient des guillemets doubles, ajoutez des guillemets doubles en tant que caractère d’échappement devant les guillemets doubles.

Par exemple, dans la chaîne de filtre DASL qui filtre la propriété Subject comme étant égale au mot ne peut pas, la chaîne de filtre entière est délimitée par une paire de guillemets doubles et la chaîne incorporée ne peut pas être délimitée par une paire de guillemets simples. Cette chaîne de filtre contient trois caractères d’échappement : le guillemet double de début et le guillemet double de fin pour la référence de propriété de http://schemas.microsoft.com/mapi/proptag/0x0037001f, et l’apostrophe dans la condition de valeur pour le mot ne peut pas. En appliquant les caractères d'échappement appropriés, vous pouvez exprimer la chaîne de filtre comme suit :

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

Vous pouvez également utiliser la fonction chr(34) pour représenter le guillemet double (dont la valeur de caractère ASCII est 34) utilisé comme caractère d’échappement. En utilisant chr(34) à la place d’un caractère d’échappement de type guillemet double, vous pouvez exprimer le dernier exemple comme suit :

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

& Chr(34) & " = " & « 'can’t' »

Il est également nécessaire d’utiliser des caractères d’échappement pour les guillemets simples et doubles figurant dans les requêtes DASL à l’aide des opérateurs ci_startswith ou ci_phrasematch. Par exemple, la requête suivante exécute une requête de correspondance d’expression pour can’t dans l’objet du message :

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

& Chr(34) & " ci_phrasematch " & « 'can’t' »

Un autre exemple est une chaîne de filtre DASL qui filtre la propriété Subject comme étant égale aux mots des éléments appropriés, où le mot stuff est entouré de guillemets doubles. Dans ce cas, vous devez ajouter des caractères d'échappement pour les guillemets doubles comme suit :

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

Un ensemble de règles d’échappement différent s’applique à une référence de propriété pour les propriétés nommées contenant l’espace, un guillemet simple, double guillemets ou caractère pourcentage. Pour plus d’informations, voir Référencement des propriétés par Espace de noms.

Date

Bien que les dates et les heures soient généralement stockées à l’aide d’un format Date, les méthodes Find et Restrict nécessitent que la date et l’heure soient converties en une représentation de chaîne. Pour vérifier que la date est mise en forme comme prévu dans Microsoft Outlook, utilisez la fonction Format. L'exemple de code suivant montre comment créer un filtre pour rechercher tous les contacts modifiés après le 15 janvier 1999 à 15:30.

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

Opérateurs booléens

Les opérateurs Boolean, TRUE/FALSE, YES/NO, ON/OFF, etc, ne doivent pas être convertis en chaîne. Par exemple, pour déterminer si la journalisation est activée pour les contacts, utilisez ce filtre :

sFilter = « [Journal] = True »

Remarque : Si vous utilisez des guillemets comme séparateurs avec des champs booléens , une chaîne vide recherche les éléments dont les champs sont False et toutes les chaînes non vides trouveront les éléments dont les champs ont la valeur True.

Mots clés (ou catégories)

Le champ Catégories est de mots clés de type, qui est conçu pour contenir plusieurs valeurs. Lorsque vous accédez au champ Catégories via un programme, celui-ci se comporte comme un champ de texte, et la chaîne doit correspondre exactement à la valeur recherchée. Les valeurs dans la chaîne de texte sont séparées par une virgule et un espace. Cela signifie généralement que vous ne pouvez pas utiliser les méthodes Find et Restrict sur un champ de mots clés s'il contient plusieurs valeurs. Par exemple, si un contact appartient à la catégorie Business et si un contact appartient aux catégories Business et Social, il n'est pas facile d'utiliser les méthodes Find et Restrict pour extraire tous les éléments qui se trouvent dans la catégorie Business. Il est préférable, dans ce cas, d'effectuer une recherche dans les contacts du dossier et d'utiliser la fonction Instr pour vérifier si la chaîne « Business » est contenue dans le champ des mots clés.

Remarque : une exception possible est si vous limitez le champ Catégories à deux ou à un nombre faible de valeurs. Vous pouvez alors utiliser les méthodes Find et Restrict avec l’opérateur logique OR pour récupérer tous les contacts de la catégorie Business. Par exemple (en pseudocode) : "Business" OR "Business, Personal" OR "Personal, Business." Les chaînes de catégorie ne sont pas sensibles à la casse.

Entier

Vous pouvez rechercher des champs Entiers avec ou sans guillemets comme délimiteurs. Les filtres suivants retrouveront les contacts qui ont été créés avec Outlook 2000 :

sFilter = « [OutlookInternalVersion] = 92711 »

sFilter = « [OutlookInternalVersion] = '92711' »

Utilisation de variables comme partie du filtre

Comme l'illustre l'exemple de la méthode Restrict, vous pouvez utiliser des valeurs issues de variables dans le filtre. L’exemple de code Microsoft Visual Basic suivant illustre la syntaxe qui utilise des variables dans le cadre du filtre.

sFullName = « Dan Wilson »

Cette approche utilise Chr(34) pour délimiter la valeur.

sFilter = « [FullName] = " & Chr(34) & sFullName & Chr(34)

' Cette approche utilise des guillemets doubles pour délimiter la valeur.

sFilter = « [FullName] = « " » & sFullName & « "" »

Utilisation d’opérateurs logiques dans le cadre du filtre

Les opérateurs logiques qui sont autorisés sont AND, OR, et NOT. Voici des variantes de la clause pour la méthode Restrict afin que vous puissiez spécifier plusieurs critères.

OR : le code suivant renvoie tous les contacts dont la catégorie est Business ou Personal.

sFilter = « [Categories] = 'Personal' or [Categories] = 'Business' »

AND : Le code suivant extrait tous les contacts personnels travaillant à Microsoft.

sFilter = « [Categories] = 'Personal' And [CompanyName] = 'Microsoft' »

NOT : Le code suivant extrait tous les contacts personnels qui ne travaillent pas à Microsoft.

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

Notes supplémentaires

Si vous essayez d'utiliser les méthodes Find ou Restrict avec des champs définis par l'utilisateur, ces champs doivent être définis dans le dossier, sinon, une erreur se produit. Il n'existe aucun moyen d'effectuer une opération « contains (contient) ». Par exemple, vous ne pouvez pas utiliser Find ou Restrict pour rechercher des éléments dont le champ Objet contient un mot particulier. Au lieu de cela, vous pouvez utiliser la AdvancedSearch(String, Object, Object, Object) méthode ou vous pouvez parcourir tous les éléments du dossier et utiliser la fonction InStr pour effectuer une recherche dans un champ. Vous pouvez utiliser la méthode Restrict pour rechercher des éléments commençant par un caractère particulier. Par exemple, pour rechercher tous les contacts dont le nom de famille commence par la lettre M, utilisez le filtre suivant :

sFilter = « [LastName] > 'LZZZ' and [LastName] < 'N' »

S’applique à