使用CAML <Or>和<And>运算符

我正在尝试编写一个执行以下操作的CAML查询:

获取_ModerationStatus批准的所有行。

获取拒绝_ModerationStatus并且行的Requester是当前用户或行的Manager是当前用户的所有行。

获取_ModerationStatus为Pending且该行的Requester为当前用户,或该行的Manager为当前用户的所有行。

到目前为止,我有这个CAML查询,但是当我运行它时,我得到了错误 Cannot complete this action. Please try again.

<View>
<Query>
    <Where>
        <Or>
            <Eq>
                <FieldRef Name='_ModerationStatus' />
                <Value Type='ModStat'>Approved</Value>
            </Eq>
            <Or>
                <And>
                    <Eq>
                        <FieldRef Name='_ModerationStatus' />
                        <Value Type='ModStat'>Pending</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name='Requester' />
                        <Value Type='Integer'><UserID /></Value>
                    </Eq>
                </And>
                <And>
                    <Eq>
                        <FieldRef Name='_ModerationStatus' />
                        <Value Type='ModStat'>Pending</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name='Manager' />
                        <Value Type='Integer'><UserID /></Value>
                    </Eq>
                </And>
            </Or>
            <Or>
                <And>
                    <Eq>
                        <FieldRef Name='_ModerationStatus' />
                        <Value Type='ModStat'>Rejected</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name='Requester' />
                        <Value Type='Integer'><UserID /></Value>
                    </Eq>
                </And>
                <And>
                    <Eq>
                        <FieldRef Name='_ModerationStatus' />
                        <Value Type='ModStat'>Rejected</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name='Manager' />
                        <Value Type='Integer'><UserID /></Value>
                    </Eq>
                </And>
            </Or>
        </Or>
    </Where>
</Query>
</View>

我很确定我没有正确应用<Or>and<And>运算符,因为像这三个这样的简单查询对我有用:

<View>
    <Query>
        <Where>
            <Eq>
                <FieldRef Name='_ModerationStatus' />
                <Value Type='ModStat'>Approved</Value>
            </Eq>
        </Where>
    </Query>
</View>

<View>
    <Query>
        <Where>
            <Eq>
                <FieldRef Name='_ModerationStatus' />
                <Value Type='ModStat'>Rejected</Value>
            </Eq>
        </Where>
    </Query>
</View>

<View>
    <Query>
        <Where>
            <Eq>
                <FieldRef Name='_ModerationStatus' />
                <Value Type='ModStat'>Pending</Value>
            </Eq>
        </Where>
    </Query>
</View>

我最终使用U2U Caml Query Builder生成了这个有效的Caml

<Query>
<Where>
  <Or>
     <Eq>
        <FieldRef Name='_ModerationStatus' />
        <Value Type='ModStat'>Approved</Value>
     </Eq>
     <Or>
        <And>
           <Eq>
              <FieldRef Name='_ModerationStatus' />
              <Value Type='ModStat'>Rejected</Value>
           </Eq>
           <Or>
              <Eq>
                 <FieldRef Name='Requester' />
                 <Value Type='User'>
                    <UserID />
                 </Value>
              </Eq>
              <Eq>
                 <FieldRef Name='Manager' />
                 <Value Type='User'>
                    <UserID />
                 </Value>
              </Eq>
           </Or>
        </And>
        <And>
           <Eq>
              <FieldRef Name='_ModerationStatus' />
              <Value Type='ModStat'>Pending</Value>
           </Eq>
           <Or>
              <Eq>
                 <FieldRef Name='Requester' />
                 <Value Type='User'>
                    <UserID />
                 </Value>
              </Eq>
              <Eq>
                 <FieldRef Name='Manager' />
                 <Value Type='User'>
                    <UserID />
                 </Value>
              </Eq>
           </Or>
        </And>
     </Or>
  </Or>
</Where>
<OrderBy>
  <FieldRef Name='EventDate' Ascending='True' />
</OrderBy>
</Query>
<ViewFields>
    <FieldRef Name='Title' />
    <FieldRef Name='Location' />
    <FieldRef Name='EventDate' />
    <FieldRef Name='EndDate' />
    <FieldRef Name='Description' />
    <FieldRef Name='Requester' />
    <FieldRef Name='Manager' />
</ViewFields>
<QueryOptions />

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PyParsing:如何使用SkipTo和OR(^)运算符

来自分类Dev

在Ruby中使用.where和比较运算符

来自分类Dev

对Python字符串使用“ and”和“ or”运算符

来自分类Dev

使用和运算符进行微优化

来自分类Dev

使用<<运算符同时写入文件和cout

来自分类Dev

了解多重成本。和->运算符使用?

来自分类Dev

无法在Eclipselink中使用的函数和运算符

来自分类Dev

使用“ >>”和“&”运算符进行变量分配

来自分类Dev

什么时候使用`<>`和`!=`运算符?

来自分类Dev

可以使用-WhatIf和调用运算符(&)?

来自分类Dev

使用SimpleXMLElement和keys数组的Twig“ in”运算符

来自分类Dev

如何在CI中使用OR和AND运算符查询?

来自分类Dev

divmod()是否比使用%和//运算符快?

来自分类Dev

MongoDB使用$ and和$ nor运算符查找查询

来自分类Dev

使用python的**运算符和*运算符时进行签名

来自分类Dev

如何使用模运算符递增和递减整数

来自分类Dev

在条件中使用逻辑运算符和比较运算符(javascript)

来自分类Dev

使用'lower()'和'in'运算符的Grails gorm'where'查询

来自分类Dev

每个分区组选择和使用运算符

来自分类Dev

如何在IN和NOT IN运算符中使用SearchCriteria API?

来自分类Dev

我应该内联运算符==和!=,以防运算符!=()使用运算符==()的否定

来自分类Dev

使用R的逻辑运算符(和/或运算符)

来自分类Dev

我应该内联运算符==和!=,以防运算符!=()使用运算符==()的否定

来自分类Dev

使用or和not运算符

来自分类Dev

使用python的**运算符和*运算符时进行签名

来自分类Dev

Excel Pivot使用“和”运算符

来自分类Dev

存储和使用算术运算符

来自分类Dev

混合使用 AND 运算符和 OR javascript

来自分类Dev

如何在 SQL 的 WHERE 子句中使用 IN 运算符和 AND 运算符...?

Related 相关文章

  1. 1

    PyParsing:如何使用SkipTo和OR(^)运算符

  2. 2

    在Ruby中使用.where和比较运算符

  3. 3

    对Python字符串使用“ and”和“ or”运算符

  4. 4

    使用和运算符进行微优化

  5. 5

    使用<<运算符同时写入文件和cout

  6. 6

    了解多重成本。和->运算符使用?

  7. 7

    无法在Eclipselink中使用的函数和运算符

  8. 8

    使用“ >>”和“&”运算符进行变量分配

  9. 9

    什么时候使用`<>`和`!=`运算符?

  10. 10

    可以使用-WhatIf和调用运算符(&)?

  11. 11

    使用SimpleXMLElement和keys数组的Twig“ in”运算符

  12. 12

    如何在CI中使用OR和AND运算符查询?

  13. 13

    divmod()是否比使用%和//运算符快?

  14. 14

    MongoDB使用$ and和$ nor运算符查找查询

  15. 15

    使用python的**运算符和*运算符时进行签名

  16. 16

    如何使用模运算符递增和递减整数

  17. 17

    在条件中使用逻辑运算符和比较运算符(javascript)

  18. 18

    使用'lower()'和'in'运算符的Grails gorm'where'查询

  19. 19

    每个分区组选择和使用运算符

  20. 20

    如何在IN和NOT IN运算符中使用SearchCriteria API?

  21. 21

    我应该内联运算符==和!=,以防运算符!=()使用运算符==()的否定

  22. 22

    使用R的逻辑运算符(和/或运算符)

  23. 23

    我应该内联运算符==和!=,以防运算符!=()使用运算符==()的否定

  24. 24

    使用or和not运算符

  25. 25

    使用python的**运算符和*运算符时进行签名

  26. 26

    Excel Pivot使用“和”运算符

  27. 27

    存储和使用算术运算符

  28. 28

    混合使用 AND 运算符和 OR javascript

  29. 29

    如何在 SQL 的 WHERE 子句中使用 IN 运算符和 AND 运算符...?

热门标签

归档