CAML Query найти записи, где параметр не существует? - PullRequest
0 голосов
/ 17 ноября 2009

У меня есть список sharepoint, в котором есть несколько полей. Кажется, что когда поле остается пустым в одной из записей - этот атрибут отсутствует в поле, когда я запрашиваю список, используя запрос CAML.

Можно ли написать запрос для возврата записей, которые не содержат этого атрибута?

Пример:

id Employee Title description
-------------------------
1  Jeff  Person1 
2  Bob  Person2
3  Charles Person3
4    Person4
5    Person5

Есть ли способ запросить это, чтобы вернуть только записи с идентификаторами 4 и 5, потому что они оставили поле имени пустым?

Я попробовал следующее:

System.Text.StringBuilder xmlQuery = new StringBuilder();
xmlQuery.Append("<Query>");        
xmlQuery.Append("   <Where>");        
xmlQuery.Append("       <IsNull>");            
xmlQuery.Append("           <FieldRef Name=\"Employee Title\" />");           
xmlQuery.Append("       </IsNull>");        xmlQuery.Append("   </Where>");        
xmlQuery.Append("</Query>");        XmlNode query = new XmlDocument();          
query.InnerXml = xmlQuery.ToString();

Но, конечно, атрибут не существует в этих записях, поэтому ничего не возвращается

Заранее спасибо!


Редактировать

Запрос работает после замены любых пробелов в Name на x0020

xmlQuery.Append("           <FieldRef Name=\"Employee_x0020_Title\" />");

Ответы [ 2 ]

1 голос
/ 17 ноября 2009

Не должно быть никаких проблем, если в значении поля отсутствует одно или несколько полей, это просто нормально и должно работать. Но одно изменение, которое вам нужно будет сделать в запросе, это удалить внешний тег запроса, используйте приведенный ниже запрос, и вам будет хорошо.

<Where>       
<IsNull>           
<FieldRef Name="Name" />       
</IsNull>   
</Where>
0 голосов
/ 18 ноября 2009

Это длинный снимок, но действительно ли ваш столбец "Имя" в списке имеет название "Название"?

FieldRefs ожидает внутреннего имени поля AFAIK

...