CAML запрашивает элементы с заданными URL-адресами
-
03-07-2019 - |
Вопрос
В SP2007 / MOSS мне нужно запустить запрос CAML к одному списку следующим образом:
<Where>
<Or>
<Eq>
<FieldRef Name='URL' />
<Value Type='URL'>/path/item1.aspx</Value>
</Eq>
<Eq>
<FieldRef Name='URL' />
<Value Type='URL'>/path/item4.aspx</Value>
</Eq>
<Eq>
<FieldRef Name='URL' />
<Value Type='URL'>/path/item7.aspx</Value>
</Eq>
</Or>
</Where>
Практическим результатом этого было бы то, что у меня есть SPListItemCollection элементов, для которых у меня были URL-адреса.
Однако я получаю сообщение об ошибке "Один или несколько типов полей установлены неправильно.Перейдите на страницу настроек списка, чтобы удалить эти поля.'
Все элементы в списке имеют один и тот же тип контента.Единственная релевантная ошибка в журналах SP показывает то же самое сообщение.
Ответ не решил эту конкретную проблему, но в конечном итоге оказался правильным (или должен быть вложенным).Проблема заключалась в том, что мой тип значения поля должен был быть FileRef .
Решение
Эта ошибка почти всегда возникает из-за того, что ваш запрос CAML неверен.Вы пробовали форматировать его следующим образом:
<Where>
<Or>
<Eq>
<FieldRef Name='URL' />
<Value Type='URL'>/path/item1.aspx</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name='URL' />
<Value Type='URL'>/path/item4.aspx</Value>
</Eq>
<Eq>
<FieldRef Name='URL' />
<Value Type='URL'>/path/item7.aspx</Value>
</Eq>
</Or>
</Or>
</Where>
Я почти уверен, что у вас может быть только два компонента в ветке Or или And.