Filtrage et affichage des propriétés à valeurs multiples pendant l’énumération des éléments d’un dossier
Cet exemple montre comment filtrer et afficher des propriétés à valeurs multiples pendant l’énumération d’éléments dans un dossier.
Exemple
Remarque
L’exemple de code suivant est un extrait de programmation d’Applications pour Microsoft Office Outlook 2007.
L’objet Table représente un ensemble de données d’élément à partir d’un objet Folder ou Search . Lorsqu’une propriété binaire, date ou à valeurs multiples est ajoutée en premier lieu à un objet Table, la façon de référencer cette propriété affecte son type et son format. Comme les références des noms intégrés retournent parfois une valeur de colonne différente par rapport à une référence à un espace de noms, vous devez déterminer si la propriété est référencée par son nom intégré explicite (s’il existe) ou par un espace de noms (indépendamment de l’existence d’un nom intégré explicite). Le tableau suivant montre la différence dans la représentation de la valeur d’une propriété (en termes de type et de format) selon le type de la propriété d’origine.
Type |
Type en retour si la propriété spécifiée utilise un nom intégré |
Type de retour si la propriété spécifiée utilise un espace de noms |
---|---|---|
Binaire (PT_BINARY) |
String |
Tableau d’octets |
Date (PT_SYSTIME) |
Local DateTime |
UTC DateTime |
À valeurs multiples (également appelé type mot clé), comme la propriété Categories(PT_MV_STRING8) |
Chaîne qui contient des valeurs séparées par des virgules |
Tableau à une dimension qui contient un élément pour chaque mot clé |
L'exemple de code suivant montre comment ajouter une propriété d'espace de noms de chaîne MAPI à l'objet Table et comment les propriétés à valeurs multiples affectent les valeurs retournées dans un objet Column . La procédure TableMultiValuedProperties filtre l’objet Table pour trouver les lignes où la propriété Categories n’est pas une référence null. La propriété Categories est représentée par une propriété qui utilise l’espace de noms de la chaîne MAPI. Un filtre DASL est construit pour les éléments ayant des catégories (le filtre réel retourne les catégories n'ayant pas une référence null). Une colonne Categories est ensuite ajoutée à l’objet Table en concaténant le spécificateur de type, 0000001f, avec la constante categoriesProperty. Enfin, l'objet Column qui représente la propriété Categories contient un tableau unidimensionnel de chaînes où chaque élément représente une catégorie assignée à l'élément. Les propriétés Categories et Subject de l’élément sont écrites sur les écouteurs de suivi de la collection Listeners.
Si vous utilisez Visual Studio pour tester cet exemple de code, vous devez d’abord ajouter une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 et spécifier la variable lorsque vous importez l’espace de noms Microsoft.Office.Interop.Outlook. L’instruction using ne doit pas se produire juste avant les fonctions de l’exemple de code, mais doit être ajoutée avant la déclaration publique. La ligne de code suivante montre comment effectuer l’importation et l’affectation dans C#.
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");
}
}