Share via


Filtern und Anzeigen von berechneten Eigenschaften beim Aufzählen von Elementen in einem Ordner

In diesem Beispiel wird gezeigt, wie Sie beim Aufzählen von Elementen in einem Ordner berechnete Eigenschaften filtern und anzeigen.

Beispiel

Hinweis

Das folgende Codebeispiel ist ein Auszug aus Programming Applications für Microsoft Office Outlook 2007.

Das Table-Objekt stellt einen Satz von Elementdaten aus einem Folder- oder Search-Objekt dar. Das Row-Objekt stellt Datenzeilen in einer Tabelle dar. Das Columns-Objekt stellt Eigenschaften der Tabelle dar. Sie können dem Table-Objekt bestimmte Eigenschaften hinzufügen, indem Sie die Add(String) -Methode des Columns-Objekts verwenden. Sie können bestimmte Eigenschaften mithilfe der Restrict(String)- Methode des Table-Objekts filtern. Bestimmte Eigenschaften lassen sich jedoch weder mithilfe von Columns.Add dem Table-Objekt hinzufügen noch mithilfe der Restrict-Methode filtern. In der folgenden Tabelle wird erklärt, ob Eigenschaften für das Table-Objekt unterstützt werden, wenn Sie die Columns.Add- oder die Restrict-Methode verwenden.

Eigenschaft

For Columns.Add

For Restrict

Binäre Eigenschaften, z. B. EntryID.

Über die integrierte oder Namespace-Eigenschaft unterstützt.

Nicht unterstützt In Outlook wird ein Fehler ausgelöst.

Body-Eigenschaften, einschließlich Body und HTMLBody, sowie die Namespacedarstellung dieser Eigenschaften, einschließlich PR_RTF_COMPRESSED.

Die Body Eigenschaft wird mit einer Bedingung unterstützt, dass nur die ersten 255 Byte des Werts in einem Table-Objekt gespeichert werden. Andere Eigenschaften, die den Textinhalt in HTML oder RTF darstellen, werden nicht unterstützt. Da nur die ersten 255 Byte von Body zurückgegeben werden, verwenden Sie die EntryID des Elements in der GetItemFromID(String, Object)-Methode zum Abrufen des Elementobjekts, wenn Sie den gesamten Textinhalt eines Elements in Text oder HTML abrufen möchten. Rufen Sie dann den vollständigen Wert von Body über das Elementobjekt ab.

In einem Filter wird nur die in Text dargestellte Body-Eigenschaft unterstützt. Das bedeutet, dass in einem DASL-Filter (DAV Searching and Locating) mit urn:schemas:http-mail:textdescription auf die Eigenschaft verwiesen werden muss und dass Sie keine HTML-Tags im Textkörper filtern können. Sie können die Leistung verbessern, indem Sie im Filter Schlüsselwörter für den Inhaltsindex verwenden, um Zeichenfolgen im Textkörper zu vergleichen.

Computer-Eigenschaften, z. B. AutoResolvedWinner und BodyFormat.

Nicht unterstützt

Nicht unterstützt

Mehrwertige Eigenschaften, z. B. Categories, Children, Companies und VotingOptions.

Unterstützt

Unterstützt, vorausgesetzt, dass Sie eine DASL-Abfrage unter Verwendung der Namespace-Darstellung erstellen können.

Eigenschaften, die ein Objekt zurückgeben, z. B. Attachments, Parent, Recipients, RecurrencePattern und UserProperties

Nicht unterstützt

Nicht unterstützt

In der folgenden Tabelle werden bekannte ungültige Eigenschaften aufgelistet, die Sie nicht mithilfe der Columns.Add-Methode dem Table-Objekt hinzufügen können. Wenn Sie versuchen, eine Eigenschaft aus dieser Liste hinzuzufügen, wird in Outlook ein Fehler ausgelöst.

AutoResolvedWinner

BodyFormat

Klasse

Unternehmen

ContactNames

DLName

DownloadState

FlagIcon

HtmlBody

InternetCodePage

IsConflict

IsMarkedAsTask

MeetingWorkspaceURL

MemberCount

Berechtigung

PermissionService

RecurrenceState

ResponseState

Saved

Gesendet

Übermittelt

TaskSubject

Ungelesen

VotingOptions

Einige berechnete Eigenschaften können nicht zum Spaltensatz für eine Tabelle hinzugefügt werden; im folgenden Codebeispiel wird diese Einschränkung umgangen. GetToDoItems verwendet eine DASL-Abfrage, um die Elemente zu beschränken, die in der Table angezeigt werde.. Wenn die berechnete Eigenschaft eine Namespacedarstellung hat, wird diese verwendet, um eine DASL-Abfrage erstellen, die das Table-Objekt so einschränkt, dass Zeilen für einen bestimmten Wert der berechneten Eigenschaft zurückgegeben werden. GetToDoItems ruft Elemente im Posteingang ab, wobei der Wert derIsMarkedAsTask- Eigenschaft gleich true ist; dann werden Werte bestimmten Aufgabeneigenschaften zugewiesen, z. B. TaskSubject, TaskDueDate, TaskStartDate und TaskCompletedDate. Schließlich werden diese Eigenschaften in die Listener der Ablaufverfolgung der Listeners-Auflistung geschrieben.

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 using-Anweisung darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgende Codezeile zeigt, wie Sie den Import und die Zuweisung in C# vornehmen.

using Outlook = Microsoft.Office.Interop.Outlook;
private void GetToDoItems()
{
    // Obtain Inbox
    Outlook.Folder folder =
        Application.Session.GetDefaultFolder(
        Outlook.OlDefaultFolders.olFolderInbox)
        as Outlook.Folder;
    // DASL filter for IsMarkedAsTask
    string filter = "@SQL=" + "\"" +
        "http://schemas.microsoft.com/mapi/proptag/0x0E2B0003"
        + "\"" + " = 1";
    Outlook.Table table =
        folder.GetTable(filter,
        Outlook.OlTableContents.olUserItems);
    table.Columns.Add("TaskStartDate");
    table.Columns.Add("TaskDueDate");
    table.Columns.Add("TaskCompletedDate");
    // Use GUID/ID to represent TaskSubject
    table.Columns.Add(
        "http://schemas.microsoft.com/mapi/id/" +
        "{00062008-0000-0000-C000-000000000046}/85A4001E");
    while (!table.EndOfTable)
    {
        Outlook.Row nextRow = table.GetNextRow();
        StringBuilder sb = new StringBuilder();
        sb.AppendLine("Task Subject: " + nextRow[9]);
        sb.AppendLine("Start Date: "
            + nextRow["TaskStartDate"]);
        sb.AppendLine("Due Date: "
            + nextRow["TaskDueDate"]);
        sb.AppendLine("Completed Date: "
            + nextRow["TaskCompletedDate"]);
        sb.AppendLine();
        Debug.WriteLine(sb.ToString());
    }
}

Siehe auch