Использование элемента IN с другими элементами в SPQuery

Я пытаюсь получить элементы из списка, используя этот запрос:

query.Query = 
@"<Where>
    <And>
        <And>
            <Geq>
                <FieldRef Name='Date' /><Value Type='DateTime' IncludeTimeValue='TRUE'>" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(dateFrom) + @"</Value>
            </Geq>
            <Leq>
                <FieldRef Name='Date' /><Value Type='DateTime' IncludeTimeValue='TRUE'>" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(dateTo) + @"</Value>
            </Leq>
        </And>
        <In>
            <FieldRef Name='Employee' LookupId='TRUE' />
                <Values>
                    <Value Type='int'>1</Value>
                    <Value Type='int'>3</Value>
                </Values>
        </In>
    </And>
</Where>";

Во время выполнения я получаю следующее исключение: SPException: Один или несколько типов полей не установлены должным образом. Перейдите на страницу настроек списка, чтобы удалить эти поля в строке List.GetItems(query).

Если я изменю SPQuery следующим образом:

query.Query =
@"<Where>
    <And>
        <Geq>
            <FieldRef Name='Date' /><Value Type='DateTime' IncludeTimeValue='TRUE'>" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(dateFrom) + @"</Value>
        </Geq>
        <Leq>
            <FieldRef Name='Date' /><Value Type='DateTime' IncludeTimeValue='TRUE'>" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(dateTo) + @"</Value>
        </Leq>
    </And>
</Where>";

или это:

query.Query =
@"<Where>
    <In>
        <FieldRef Name='Employee' LookupId='TRUE' />
            <Values>
                <Value Type='int'>1</Value>
                <Value Type='int'>3</Value>
            </Values>
    </In>
</Where>";

все работает отлично.


person Enam    schedule 31.10.2013    source источник


Ответы (1)


Как ни странно, проблема заключалась в повторном использовании объекта SPQuery. Итак, я создаю новый SPQuery, и все в порядке.

person Enam    schedule 31.10.2013