Suchen nach einem Ausdruck im Textkörper von Elementen in einem Ordner
In diesem Beispiel wird nach der Zeichenfolge „Office“ im Textkörper der Elemente im Posteingang gesucht.
Beispiel
In diesem Codebeispiel wird eine DASL-Syntax (DAV Searching and Locating) zum Angeben einer Abfrage verwendet. Um den Filter zu erstellen, überprüft das Codebeispiel zunächst, ob die Sofortsuche im Standardspeicher aktiviert ist, um zu bestimmen, ob die ci_phrasematch Schlüsselwort (keyword) für eine genaue Ausdrucksübereinstimmung von "office" im Textkörper des Elements verwendet werden soll, oder die ähnliche Schlüsselwort (keyword), um jedes Vorkommen von "office" als exakte Zeichenfolge oder Teilzeichenfolge im Elementtext abzugleichen. In dem Beispiel wird der Filter dann auf die GetTable-Methode im Posteingang angewendet, und die Ergebnisse werden in einem Table-Objekt abgerufen. Dann wird der Betreff der zurückgegebenen Elemente in Tabelle angezeigt.
Das Codebeispiel gibt die Body-Eigenschaft mithilfe der Namespace-Darstellung urn:schemas:httpmail:textdescription an.
Die Syntax für die Verwendung des ci_phrasematch-Schlüsselwortes lautet:
<PropertySchemaName> ci_phrasematch <ComparisonString>
Die Syntax für die Verwendung des like-Schlüsselworts für die Präfixübereinstimmung lautet:
<PropertySchemaName> like <Token>%
Die Syntax für die Verwendung des like-Schlüsselworts für die Übereinstimmung mit einer beliebigen Teilzeichenfolge lautet:
<PropertySchemaName> like %<Token>%
Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die Anweisung Imports oder using darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgenden Codezeilen zeigen, wie Sie den Import und die Zuweisung in Visual Basic und C# vornehmen.
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub DemoSearchBody()
Dim filter As String
If (Application.Session.DefaultStore.IsInstantSearchEnabled) Then
filter = "@SQL=" & Chr(34) _
& "urn:schemas:httpmail:textdescription" & Chr(34) _
& " ci_phrasematch 'office'"
Else
filter = "@SQL=" & Chr(34) _
& "urn:schemas:httpmail:textdescription" & Chr(34) _
& " like '%office%'"
End If
Dim table As Outlook.Table = _
Application.Session.GetDefaultFolder( _
Outlook.OlDefaultFolders.olFolderInbox).GetTable( _
filter, Outlook.OlTableContents.olUserItems)
While Not (table.EndOfTable)
Dim row As Outlook.Row = table.GetNextRow()
Debug.WriteLine(row("Subject"))
End While
End Sub
private void DemoSearchBody()
{
string filter;
if (Application.Session.DefaultStore.IsInstantSearchEnabled)
{
filter = "@SQL=" + "\""
+ "urn:schemas:httpmail:textdescription" + "\""
+ " ci_phrasematch 'office'";
}
else
{
filter = "@SQL=" + "\""
+ "urn:schemas:httpmail:textdescription" + "\""
+ " like '%office%'";
}
Outlook.Table table = Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderInbox).GetTable(
filter, Outlook.OlTableContents.olUserItems);
while (!table.EndOfTable)
{
Outlook.Row row = table.GetNextRow();
Debug.WriteLine(row["Subject"]);
}
}