2009-11-17 3 views
0

J'ai une liste de points de partage qui a plusieurs champs. Il semble que lorsqu'un champ est laissé vide sur l'un des enregistrements - cet attribut est manquant sur le champ lorsque j'interroge la liste en utilisant une requête CAML.CAML Requête trouver des enregistrements où le paramètre n'existe pas?

Est-il possible d'écrire une requête pour retourner les enregistrements qui ne contiennent pas cet attribut?

Exemple:

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

Est-il possible d'interroger ce seulement renvoyer les enregistrements avec identifiant 4 et 5 parce qu'ils ont laissé le champ Nom vide?

J'ai essayé les éléments suivants:

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(); 

Mais bien sûr, l'attribut n'existe pas dans ces dossiers, donc rien est retourné

Merci à l'avance!


Modifier

La requête fonctionne après le remplacement des espaces dans le Name avec x0020

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

Répondre

1

Il ne devrait pas y avoir de problème si une valeur de champ est manquant un ou plusieurs champs, c'est juste normal et ça devrait marcher. Mais un changement que vous aurez à faire dans la requête est de supprimer la balise de requête externe s'il vous plaît utiliser la requête ci-dessous et vous devriez être bon à faire.

<Where>  
<IsNull>   
<FieldRef Name="Name" />  
</IsNull> 
</Where> 
+0

Merci pour avoir affirmé que c'est possible! J'ai trouvé mon erreur, je suppose que j'aurais dû posté mon code réel plutôt qu'un échantillon. L'échantillon a fonctionné comme mon code n'a pas fonctionné. Si je pouvais voter, je le ferais. Merci! – Khan

+0

Capable de upvote maintenant, alors je l'ai fait. :) – Khan

0

Ceci est un longhot, mais votre colonne "Nom" est-elle nommée "Titre" dans la liste? FieldRefs attend le nom interne du champ AFAIK

Questions connexes