CAML 查询

Posted

技术标签:

【中文标题】CAML 查询【英文标题】:CAML Query 【发布时间】:2009-06-19 15:50:04 【问题描述】:

我想要一个 以从日历列表中获取事件。

我想在接下来的 30 天左右获得包括今天在内的所有事件。

到目前为止我有:

<Where>
  <DateRangesOverlap>
    <Geq>
      <FieldRef Name=\"EventDate\" />
      <Value Type=\"DateTime\">
        <Today />
      </Value>
    </Geq>
    <FieldRef Name=\"EndDate\" />
    <FieldRef Name=\"RecurrenceID\" />
    <Value Type=\"DateTime\">
      <Month />
    </Value>
  </DateRangesOverlap>
</Where>

这不起作用:(有什么想法吗?

【问题讨论】:

你说不行,怎么行不行?你也可以粘贴你进行查询的代码吗? 您针对哪个 SharePoint 版本发布了此问题。 【参考方案1】:

正如 Nat 所说,您暗示(但未指定)您正在使用日历列表中的重复事件,所以我假设那部分不起作用?

您需要在运行 CAML 查询之前设置 SPQuery.ExpandRecurrancesSPQuery.CalendarDate 属性,并且您只能使用对象模型而不是 Web 服务或通过在 CAML 中设置属性来执行此操作。

进一步 - IIRC 这只会扩展与.CalendarDate 在同一日历月内发生的重复事件的实例,因此您必须多次运行它才能获得多月视图。

这是迄今为止我找到的涵盖重复事件的最佳参考。

Understanding the SharePoint Calendar and how to export it to iCal format

欢迎来到 SharePoint 中重复发生的事件的噩梦!

【讨论】:

【参考方案2】:

循环实际上并没有将所有事件都添加到列表中,但 CAML 只能从列表中存储的“实际”事件中查询。

【讨论】:

以上是关于CAML 查询的主要内容,如果未能解决你的问题,请参考以下文章

CAML“不在”查询

CAML 查询

CAML 查询包含不起作用

powershell 运行Caml查询

Caml 多表关联查询

CAML查询中的自定义排序顺序