在SPQuery中使用IN元素与其他元素

时间:2013-10-31 08:52:08

标签: sharepoint sharepoint-2010 caml 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>";

一切都很完美。

1 个答案:

答案 0 :(得分:0)

问题在于重复使用SPQuery对象,令人惊讶。所以我创建了一个新的SPQuery,一切都很好。