Share via


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

In diesem Beispiel wird gezeigt, wie Sie beim Aufzählen von Elementen in einem Ordner Eigenschaften mit mehreren Werten 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. Wird eine binäre, eine Datums- oder eine mehrwertige Eigenschaft das erste Mal einem Table-Objekt hinzugefügt, beeinflusst die Art und Weise, wie die Eigenschaft referenziert wird, ihren Typ und ihr Format. Da ein Verweis mit integriertem Namen manchmal einen anderen Spaltenwert zurückgibt als ein Namespaceverweis, sollten Sie bestimmen, ob die Eigenschaft durch ihren expliziten integrierten Namen (sofern vorhanden) referenziert wird oder durch den Namespace (unabhängig vom Vorhandensein eines expliziten integrierten Namens). In der folgenden Tabelle wird der Unterschied in der Darstellung des Eigenschaftswerts (hinsichtlich Typ und Format) für die verschiedenen Ursprungstypen von Eigenschaften gezeigt.

Typ

Rückgabetyp, wenn für die angegebene Eigenschaft ein integrierter Namen verwendet wird

Rückgabetyp, wenn die angegebene Eigenschaft einen Namespace verwendet

Binär (PT_BINARY)

Zeichenfolge

Bytearray

Datum (PT_SYSTIME)

Lokal DateTime

UTC DateTime

Mehrwertig (auch als Schlüsselworttyp bezeichnet), z. B. Categories-Eigenschaft (PT_MV_STRING8)

Zeichenfolge, die durch Trennzeichen getrennte Werte enthält.

Eindimensionales Array, das für jedes Schlüsselwort ein Element enthält.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie dem Table-Objekt eine Eigenschaft mit einem MAPI-Zeichenfolgennamespace hinzufügen und wie sich mehrwertige Eigenschaften auf die in einem Column -Objekt zurückgegebenen Werte auswirken. Die TableMultiValuedProperties-Prozedur filtert das Table-Objekt nach Zeilen, in denen die Categories-Eigenschaft kein Nullverweis ist. Die Categories-Eigenschaft wird durch eine Eigenschaft dargestellt, die den MAPI-Zeichenfolgennamespace verwendet. Ein DASL-Filter (DAV Searching and Locating) wird für Elemente erstellt, die Kategorien aufweisen (der tatsächliche Filter gibt Kategorien zurück, die keinen Nullverweise haben). Anschließend wird dem Table-Objekt durch Verketten des Typbezeichners, 0000001f, mit der categoriesProperty-Konstanten eine Categories-Spalte hinzugefügt. Das Column-Objekt schließlich, das die Categories-Eigenschaft darstellt, enthält ein eindimensionales Zeichenfolgenarray, wobei jedes Element des Arrays eine dem Element zugeordnete Kategorie darstellt. Sowohl die Categories- als auch die Subject-Eigenschaft des Elements werden 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 TableMultiValuedProperties()
{
    const string categoriesProperty =
        "http://schemas.microsoft.com/mapi/string/"
        + "{00020329-0000-0000-C000-000000000046}/Keywords";
    // Inbox
    Outlook.Folder folder =
        Application.Session.GetDefaultFolder(
        Outlook.OlDefaultFolders.olFolderInbox)
        as Outlook.Folder;
    // Call GetTable with filter for categories
    string filter = "@SQL="
        + "Not(" + "\"" + categoriesProperty
        + "\"" + " Is Null)";
    Outlook.Table table =
        folder.GetTable(filter,
        Outlook.OlTableContents.olUserItems);
    // Add categories column and append type specifier
    table.Columns.Add(categoriesProperty + "/0000001F");
    while (!table.EndOfTable)
    {
        Outlook.Row nextRow = table.GetNextRow();
        string[] categories =
            (string[])nextRow[categoriesProperty + "/0000001F"];
        Debug.WriteLine("Subject: " + nextRow["Subject"]);
        Debug.Write("Categories: ");
        foreach (string category in categories)
        {
            Debug.Write("\t" + category);
        }
        Debug.WriteLine("\n");
    }
}

Siehe auch