筛选并显示上月修改的收件箱项

此示例展示如何筛选并显示上月修改的收件箱项目。

示例

注意

下面的代码示例摘录自 Microsoft Office Outlook 2007 应用程序编程

DAV 搜索和定位 (DASL) 查询语言基于 Outlook 中 DASL 的 Microsoft Exchange 实现。 它可用于在对文件夹数据的项目级搜索中返回基于属性的结果,例如使用 Table 对象代表的结果。 通过使用等号 (=) 运算符,DASL 筛选器支持字符串比较,其中包括等价、前缀、短语和子字符串匹配。 DASL 查询可用于执行日期/时间比较和筛选。

由于 DASL 查询始终采用协调世界时 (UTC) 形式执行 DateTime 比较,因此如果希望查询能够正确运行,则必须将本地时间值转换为 UTC。 因 DASL 筛选器支持字符串比较的缘故,还必须将 DateTime 值转换成字符串表现形式。 可以通过两种方式进行 DateTime 转换:使用 Row 对象的 LocalTimeToUTC(Object) 方法,或使用 Outlook DateTime 宏进行转换。

下面的代码行演示如何使用 LocalTimeToUTC 方法将 LastModificationTime 属性(所有 Item 对象中的默认列)的值转换为 UTC。

DateTime modified = nextRow.LocalTimeUTC(“LastModificationTime”);

下表列出了可用来返回筛选后的字符串的 DateTime 宏,这些字符串是将给定的 DateTime 属性值与 UTC 中指定的相对日期或时间范围加以比较的结果。 SchemaName 属性值表示由命名空间引用的任何有效的 DateTime 属性。

语法

说明

今天

%today(“SchemaName”)%

限制为 SchemaName 属性值等于今天的项目。

tomorrow

%tomorrow(“SchemaName”)%

限制为 SchemaName 属性值等于明天的项目。

yesterday

%yesterday(“SchemaName”)%

限制为 SchemaName 属性值等于昨天的项目。

next7days

%next7days(“SchemaName”)%

限制为 SchemaName 属性值在接下来七天范围内的项目。

last7days

%last7days(“SchemaName”)%

限制为 SchemaName 属性值在过去七天范围内的项目。

nextweek

%nextweek(“SchemaName”)%

限制为 SchemaName 属性值在下一周范围内的项目。

thisweek

%thisweek(“SchemaName”)%

限制为 SchemaName 属性值在当周范围内的项目。

lastweek

%lastweek(“SchemaName”)%

限制为 SchemaName 属性值在上一周范围内的项目。

nextmonth

%nextmonth(“SchemaName”)%

限制为 SchemaName 属性值在下个月范围内的项目。

thismonth

%thismonth(“SchemaName”)%

限制为 SchemaName 属性值在当月范围内的项目。

lastmonth

%lastmonth(“SchemaName”)%

限制为 SchemaName 属性值在上个月范围内的项目。

在下面的示例中,DemoDASLDateMacro 会创建一个 DASL 查询,该查询使用 lastmonthDateTime 宏在用户的收件箱中筛选上个月修改的项目。 然后,它会使用该筛选器创建 Table,并枚举和显示受限 Table 对象中的各行。

如果使用 Visual Studio 测试此代码示例,必须先添加对 Microsoft Outlook 15.0 对象库组件的引用,并在导入 Microsoft.Office.Interop.Outlook 命名空间时指定 Outlook 变量。 不得将 using 语句直接添加到此代码示例中的函数前面,这个语句必须后跟公共类声明。 下面的代码行演示了如何在 C# 中执行导入和分配。

using Outlook = Microsoft.Office.Interop.Outlook;
private void DemoDASLDateMacro()
{
    string filter = "@SQL=" + "%lastmonth(" + "\"" +
        "DAV:getlastmodified" + "\"" + ")%";
    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"]);
    }
}

另请参阅