_Items.Find(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.
Sucht ein Outlook-Elementobjekt, das dem angegebenen Filter
entspricht, und gibt es zurück.
public:
System::Object ^ Find(System::String ^ Filter);
public object Find (string Filter);
Public Function Find (Filter As String) As Object
Parameter
- Filter
- String
Eine Zeichenfolge, die die Kriterien angibt, die das zurückgegebene Objekt erfüllen muss.
Gibt zurück
Ein Object-Wert, der ein Outlook-Element darstellt, wenn der Aufruf erfolgreich ist; gibt Nothing (ein NULL-Verweis (Nothing in Visual Basic) in C# zurück, wenn ein Fehler auftritt.
Hinweise
Verwenden Sie die -Methode, um die Inhaltsindizierungssuche in der ItemsRestrict(String) Auflistung zu verwenden. FindRow gibt einen Fehler zurück, wenn Filter
Schlüsselwörter für die Inhaltsindizierung enthält. Weitere Informationen zu Schlüsselwörtern für die Inhaltsindizierung finden Sie unter Filtern von Elementen mithilfe von Abfrageschlüsselwörtern.
Die -Methode gibt einen Fehler mit den folgenden Eigenschaften im Filter
zurück:
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 ("") um die Werte einzugrenzen, 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. The following example creates a filter to find all contacts that have been modified after January 15, 1999 at 3:30 P.M.
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 für die Restrict-Methode veranschaulicht, können Sie Werte aus Variablen als Teil des Filters verwenden. Das folgende Microsoft Visual Basic-Codebeispiel veranschaulicht die Syntax, die Variablen als Teil des Filters verwendet.
sFullName = "Dan Wilson"
Bei diesem Ansatz wird Chr(34) verwendet, 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 versuchen, die Find- oder Restrict-Methode mit benutzerdefinierten Feldern zu verwenden, müssen die Felder im Ordner definiert werden. Andernfalls tritt ein Fehler auf. 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. Verwenden Sie stattdessen die AdvancedSearch-Methode, oder durchlaufen Sie alle Elemente im Ordner in einer Schleife, und verwenden Sie die InStr-Funktion, um eine Suche innerhalb eines Felds auszufü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'"