我正在尝试编写一个执行以下操作的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] 删除。
我来说两句