_Items.Restrict(String) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wendet einen Filter auf die Items Auflistung an und gibt eine neue Auflistung zurück, die alle Elemente aus dem Original enthält, die dem Filter entsprechen.
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
Parameter
- Filter
- String
Ein Filterausdruck, der angewendet werden soll. Weitere Informationen finden Sie in der Find(String) -Methode.
Gibt zurück
Eine Items-Auflistung , die die Elemente aus der ursprünglichen Items-Auflistung darstellt, die dem Filter entsprechen.
Hinweise
Diese Methode ist eine Alternative zur Verwendung der -Methode oder FindNext() -Find(String)Methode, um bestimmte Elemente innerhalb einer Auflistung zu durchlaufen. Die Methoden Find oder FindNext sind schneller als Filtern, wenn nur wenige Elemente vorhanden sind. Die Restrict-Methode ist erheblich schneller, wenn sich eine große Zahl von Elementen in der Auflistung befindet, insbesondere wenn vermutlich nur wenige Elemente in einer umfangreichen Auflistung gefunden werden.
Hinweis: Wenn Sie benutzerdefinierte Felder als Teil einer Find - oder Restrict-Klausel verwenden, müssen die benutzerdefinierten Felder im Ordner vorhanden sein. Sonst generiert der Code einen Fehler, der darauf hinweist, dass das Feld nicht bekannt ist. Sie können ein Feld zu einem Ordner hinzufügen, indem Sie die Feldauswahl anzeigen und auf Neu klicken.
Diese Methode kann bei den folgenden Eigenschaften nicht verwendet werden und führt zu einem Fehler:
BodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermission | LastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURL |
Filter für die Suchen und Einschränken-Methode erstellen
Die Syntax für den Filter variiert je nach dem Typ des Felds, das Sie filtern möchten.
String (für Textfelder)
Beim Durchsuchen von Textfeldern können Sie entweder ein Apostroph (') oder doppelte Anführungszeichen ("") verwenden, um die Werte zu begrenzen, die Teil des Filters sind. Beispielsweise funktionieren alle folgenden Zeilen ordnungsgemäß, wenn das Feld vom Typ String (Zeichenfolge in C#) ist:
sFilter = "[CompanyName] = 'Microsoft'"
sFilter = "[CompanyName] = ""Microsoft"""
sFilter = "[CompanyName] = " & Chr(34) & "Microsoft" & Chr(34)
Wenn Sie beim Festlegen eines Filters in einer Jet- oder DASL-Abfrage zum Begrenzen einer Zeichenfolge, die Teil des Filter ist, ein Paar einfache Anführungszeichen verwenden und die Zeichenfolge ein weiteres einfaches Anführungszeichen oder ein Apostroph enthält, fügen Sie vor dem einfachen Anführungszeichen oder dem Apostroph ein einfaches Anführungszeichen als Schutzzeichen hinzu. Verwenden Sie einen ähnlichen Ansatz, wenn Sie ein Paar doppelter Anführungszeichen verwenden, um eine Zeichenfolge zu trennen. Wenn die Zeichenfolge ein doppeltes Anführungszeichen enthält, fügen Sie ein doppeltes Anführungszeichen als Schutzzeichen vor dem doppelten Anführungszeichen hinzu.
In der DASL-Filterzeichenfolge, die nach der Subject-Eigenschaft filtert, die gleich dem Wort can't ist, wird beispielsweise die gesamte Filterzeichenfolge durch ein Paar doppelter Anführungszeichen getrennt, und die eingebettete Zeichenfolge kann nicht durch ein Paar einzelner Anführungszeichen getrennt werden. Es gibt drei Zeichen, die Sie in dieser Filterzeichenfolge mit Escapezeichen versehen müssen: das beginnende doppelte Anführungszeichen und das endende doppelte Anführungszeichen für den Eigenschaftenverweis von http://schemas.microsoft.com/mapi/proptag/0x0037001f, und das Apostroph in der Wertbedingung für das Wort kann nicht. Durch Anwendung der geeigneten Escapezeichen kann die Filterzeichenfolge wie folgt ausgedrückt werden:
filter = "@SQL="""http://schemas.microsoft.com/mapi/proptag/0x0037001f" = 'can't'"
Alternativ können Sie die chr(34)-Funktion verwenden, um das doppelte Anführungszeichen darzustellen (dessen ASCII-Zeichenwert "34" ist), das als Escapezeichen verwendet wird. Unter Verwendung der chr(34)-Ersetzung für ein doppeltes Anführungszeichen als Escapezeichen können Sie das letzte Beispiel wie folgt ausdrücken:
filter = "@SQL= " & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001f" _
& Chr(34) & " = " & "'can't'"
Das Escapen von einfachen und doppelten Anführungszeichen ist ebenfalls in DASL-Abfragen mit den Operatoren ci_startswith und ci_phrasematch erforderlich. Folgende Abfrage führt beispielsweise eine Begriffvergleichsabfrage für can't im Nachrichtenbetreff aus:
filter = "@SQL=" & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001E" _
& Chr(34) & " ci_phrasematch " & "nicht möglich"
Ein weiteres Beispiel ist eine DASL-Filterzeichenfolge, die nach der Subject-Eigenschaft filtert, die gleich den Wörtern des richtigen Zeugs ist, wobei das Wort in doppelte Anführungszeichen eingeschlossen wird. In diesem Fall müssen die umschließenden doppelten Anführungszeichen wie folgt escapet werden:
filter = "@SQL="""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'the right ""stuff""'"
Ein anderer Satz von Escaperegeln gilt für Eigenschaftenverweise bei benannten Eigenschaften, die ein Leerzeichen, ein einfaches oder ein doppeltes Anführungszeichen enthalten. Weitere Informationen finden Sie unter Eigenschaften nach Namespace referenzieren.
Datum
Obwohl Datums- und Uhrzeitangaben in der Regel im Date-Format gespeichert werden, erfordern die Find - und Restrict-Methoden , dass Datum und Uhrzeit in eine Zeichenfolgendarstellung konvertiert werden. Um sicherzustellen, dass das Datum wie von Microsoft Outlook erwartet formatiert ist, verwenden Sie die Funktion Format. Im folgenden Beispiel wird einen Filter erstellt, um alle Kontakte zu finden, die nach dem 15. Januar 1999, 15:30 Uhr, geändert wurden
sFilter = "[LastModificationTime] > '" & Format("15.01.99 15:30 Uhr", "ddddd h:nn AMPM") & "'"
Boolesche Operatoren
Boolesche Operatoren, TRUE/FALSE, YES/NO, ON/OFF usw. sollten nicht in eine Zeichenfolge konvertiert werden. Um festzustellen, ob das Journaling für Kontakte aktiviert ist, können Sie z. B. diesen Filter verwenden:
sFilter = "[Journal] = True"
Hinweis: Wenn Sie Anführungszeichen als Trennzeichen mit booleschen Feldern verwenden, findet eine leere Zeichenfolge Elemente, deren Felder False sind, und alle nicht leeren Zeichenfolgen finden Elemente, deren Felder True sind.
Keywords (oder Categories)
Das Feld Kategorien ist vom Typ Schlüsselwörter, das für mehrere Werte konzipiert ist. When accessing it programmatically, the Categories field behaves like a Text field, and the string must match exactly. Values in the text string are separated by a comma and a space. This typically means that you cannot use the Find and Restrict methods on a keywords field if it contains more than one value. For example, if you have one contact in the Business category and one contact in the Business and Social categories, you cannot easily use the Find and Restrict methods to retrieve all items that are in the Business category. Instead, you can loop through all contacts in the folder and use the Instr function to test whether the string "Business" is contained within the entire keywords field.
Hinweis: Eine mögliche Ausnahme ist, wenn Sie das Feld Kategorien auf zwei oder eine geringe Anzahl von Werten beschränken. Anschließend können Sie die Methoden Find und Restrict mit dem logischen OPERATOR OR verwenden, um alle Geschäftskontakte abzurufen. Zum Beispiel (im Pseudocode): "Unternehmen" oder "Unternehmen, persönlich" oder "Persönlich, Unternehmen" Bei Kategoriezeichenfolgen wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Ganze Zahl
Sie können nach Integer-Feldern mit oder ohne Anführungszeichen als Trennzeichen suchen. Mithilfe folgender Filter wird nach Kontakten gesucht, die in Outlook 2000 erstellt wurden:
sFilter = "[OutlookInternalVersion] = 92711"
sFilter = "[OutlookInternalVersion] = '92711'"
Verwenden von Variablen in Filtern
Wie das Beispiel mit der Restrict-Methode zeigt, können Werte aus Variablen als Teil des Filters verwendet werden. Das folgende Microsoft Visual Basic-Codebeispiel veranschaulicht die Syntax, die Variablen als Teil des Filters verwendet.
sFullName = "Dan Wilson"
' Dieser Ansatz verwendet Chr(34), um den Wert zu begrenzen.
sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34)
' Bei diesem Ansatz werden doppelte Anführungszeichen verwendet, um den Wert zu begrenzen.
sFilter = "[FullName] = """ & sFullName & """"
Verwenden von logischen Operatoren als Teil des Filters
Logische Operatoren, die zulässig sind, sind UND, ODER und NICHT. Im Folgenden finden Sie Variationen der Klausel für die Restrict-Methode , sodass Sie mehrere Kriterien angeben können.
OR: Der folgende Code gibt alle Kontaktelemente zurück, deren Kategorie entweder "Business" oder "Personal" ist.
sFilter = "[Categories] = 'Personal' Or [Categories] = 'Business'"
AND: Der folgende Code ruft alle persönlichen Kontakte auf, die bei Microsoft arbeiten.
sFilter = "[Categories] = 'Personal' And [CompanyName] = 'Microsoft'"
NOT: Der folgende Code ruft alle persönlichen Kontakte auf, die nicht bei Microsoft arbeiten.
sFilter = "[Categories] = 'Personal' And Not([CompanyName] = 'Microsoft')"
Zusätzliche Hinweise
Wenn Sie die Find- oder Restrict-Methode in benutzerdefinierten Feldern verwenden möchten, müssen die Felder im Ordner definiert sein, da andernfalls ein Fehler auftritt. Es gibt keine Möglichkeit, eine "contains"-Operation auszuführen. Sie können z. B. nicht mithilfe der Methode Find oder Restrict nach Elementen suchen, die ein bestimmtes Wort im Feld Betreff enthalten. Stattdessen können Sie die AdvancedSearch(String, Object, Object, Object) -Methode verwenden oder alle Elemente im Ordner durchlaufen und die InStr-Funktion verwenden, um eine Suche innerhalb eines Felds durchzuführen. Mithilfe der Restrict-Methode können Sie nach Elementen suchen, die innerhalb eines bestimmten Bereichs von Zeichen beginnen. Verwenden Sie z. B. den folgenden Filter, um nach allen Kontakten mit einem Nachnamen zu suchen, der mit dem Buchstaben "M" beginnt:
sFilter = "[LastName] > 'LZZZ' and [LastName] < 'N'"