interrogazione CAML con più di multiplo E / O genera SPException “Uno o più tipi di campo non sono installati correttamente. Vai alla pagina l'elenco delle impostazioni per eliminare questi campi “.
-
16-10-2019 - |
Domanda
Ho bisogno di costruire una query CAML in fase di esecuzione in base all'input dell'utente. La query CAML potrebbe essere semplice come
<Where>
<Eq>
<FieldRef Name="Status" />
<Value Type="Text">Awaiting Completion</Value>
</Eq>
</Where>
o potrebbero includere multipla AND e OR come
<Where>
<Or>
<Or>
<Eq>
<FieldRef Name="Status" />
<Value Type="Text">Awaiting Completion</Value>
</Eq>
<Eq>
<FieldRef Name="Status" />
<Value Type="Text">Ongoing</Value>
</Eq>
</Or>
<Eq>
<FieldRef Name="status" />
<Value Type="Text">Postponed</Value>
</Eq>
</Or>
</Where>
Il problema è che, non appena aggiungo un terzo Stato per controllare come nella query sopra di esso genera uno SPException
"Uno o più tipi di campo non sono installato correttamente. Vai alla lista pagina delle impostazioni per eliminare questi campi "
Un frammento di codice rapido per riprodurre il problema:
using (SPSite spSite = new SPSite("http://sp2010"))
{
using (SPWeb spWeb = spSite.OpenWeb("/test"))
{
SPQuery spQuery = new SPQuery();
spQuery.Query = "<Where><Or><Or><Eq><FieldRef Name=\"Status\" /><Value Type=\"Text\">Awaiting Completion</Value></Eq><Eq><FieldRef Name=\"Status\" /><Value Type=\"Text\">Ongoing</Value></Eq></Or><Eq><FieldRef Name=\"status\" /><Value Type=\"Text\">Postponed</Value></Eq></Or></Where>";
SPListItemCollection spListItemCollection = spWeb.Lists["Actions"].GetItems(spQuery);
foreach(SPListItem spListItem in spListItemCollection)
{
Console.WriteLine(spListItem.Title);
}
}
}
Console.ReadKey();
Tutte le idee?
Soluzione
Ok, sto girando il mio commento in risposta.
Onse in un po 'tutti stanno facendo un errori di battitura -. Per risolvere il problema si dovrebbe usare "Stato" al posto di "status" in 3 ° <Eq>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange