如何使用嵌套的AND或OR编写CAML查询

时间:2018-01-26 14:34:23

标签: sharepoint caml

在你开始推荐U2U CAML编辑器或CAML Designer 2013之前,我已经尝试过两者,没有一个允许我以直观的方式对ANDS / ORS语句进行分组以进行正确的查询。

如果Bill循环使用某些字段,我会有一个列表,在SQL中这将非常简单:

firstname, lastname,

我的代码或多或少是这样的:但我错过了将这两个大的语句分组

WHERE (Content Type='Bill Cycle')
  AND (Status != 'Completed' ANDStatus!='Terminated' and Status!=NULL)
  AND (JobAdvisor:xyz OR JobPartner:xyz or JobManager:xyz or Reviewer:xyz or AnotherUserField:xyz)

1 个答案:

答案 0 :(得分:1)

只需按照您的SQL示例...外部和三个方面:Bill Cycle测试,and'ed状态测试和OR块。

<And>

  <Eq>
    <FieldRef Name='ContentType' />
    <Value Type='Computed'>Bill Cycle</Value>
  </Eq>

  <And>
    <Neq>
      <FieldRef Name='Bill_x0020_Preparation_x0020_Status' />
      <Value Type='Text'>Completed</Value>
    </Neq>
    <Neq>
      <FieldRef Name='Bill_x0020_Preparation_x0020_Status' />
      <Value Type='Text'>Terminated</Value>
    </Neq>
    <IsNull>
      <FieldRef Name='Bill_x0020_Preparation_x0020_Status' />
    </IsNull>
  </And>

  <Or>
    <Or>
      <Or>
        <Or>
          <Contains>
            <FieldRef Name='Billing_x0020_Advisor_x0020_Reviewers' />
            <Value Type='User'>a</Value>
          </Contains>
          <Contains>
            <FieldRef Name='Final_x0020_P_x002F_D_x0020_Approver' />
            <Value Type='User'>a</Value>
          </Contains>
        </Or>
        <Contains>
          <FieldRef Name='BillManager' />
          <Value Type='User'>a</Value>
        </Contains>
      </Or>
    </Or>
    <Contains>
      <FieldRef Name='Bill_x0020_Preparer' />
      <Value Type='User'>a</Value>
    </Contains>
  </Or>

</And>