2

次のことを行う 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>
4

1 に答える 1