次のことを行う CAML クエリを作成しようとしています。
_ModerationStatus が Approved であるすべての行を取得します。
_ModerationStatus が Rejected で、行のリクエスターが現在のユーザーであるか、行のマネージャーが現在のユーザーであるすべての行を取得します。
_ModerationStatus が Pending で、行のリクエスターが現在のユーザーであるか、行のマネージャーが現在のユーザーであるすべての行を取得します。
これまでのところ、この 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>
次の 3 つのような単純なクエリが機能するため、 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>