Recherche dans un dossier d’une expression employée dans le corps des éléments
Cet exemple recherche la chaîne « office » dans le corps des éléments de la boîte de réception.
Exemple
Cet exemple de code utilise une syntaxe DASL (DAV Searching and Locating) pour spécifier une requête. Pour construire le filtre, l'exemple de code vérifie d'abord si la Recherche instantanée est activée dans la banque par défaut afin de déterminer s'il faut utiliser le mot clé ci_phrasematch pour une correspondance de phrase exacte de « office » dans le corps de l'élément, ou le mot clé like pour trouver toute occurrence de « office » comme chaîne ou sous-chaîne exacte dans le corps de l'élément. Il applique ensuite le filtre à la méthode GetTable sur le Boîte de réception et obtient les résultats dans un objet Table . L’exemple de code affiche ensuite l’objet de chaque élément renvoyé dans l’objet Table.
L’exemple de code spécifie la propriété Body en utilisant la représentation d’espace de noms urn:schemas:httpmail:textdescription.
La syntaxe d'utilisation du mot clé ci_phrasematch est la suivante :
<PropertySchemaName> ci_phrasematch <ComparisonString>
La syntaxe à employer pour utiliser le mot clé like pour la correspondance de préfixes est la suivante :
<PropertySchemaName> like <Token>%
La syntaxe à employer pour utiliser le mot clé like pour la correspondance de sous-chaînes est la suivante :
<PropertySchemaName> like %<Token>%
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 Importer ou utilisation ne doit pas se produire juste avant les fonctions de l'exemple de code, mais doit être ajoutée avant la déclaration publique. Les lignes de code suivantes montrent comment effectuer l’importation et l’affectation dans Visual Basic et dans C#.
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"]);
}
}