我正在尝试编写执行以下操作的CAML查询:
获取_ModerationStatus被批准的所有行。
获取_ModerationStatus被拒绝的所有行,行的请求者是当前用户,或者行的管理员是当前用户。
获取_ModerationStatus待定的所有行,行的请求者是当前用户,或者行的管理员是当前用户。
到目前为止,我有这个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>
运算符,因为像这三个更简单的查询对我有用:
<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>
答案 0 :(得分:3)
我最后使用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 />