Hi all,
I am working on SharePoint 2019 Server, years ago I created a List and a View, where the filter is the following:
<Query>
<OrderBy>
<FieldRef Name="Angebot_x003a_Jahr" Ascending="FALSE"/>
<FieldRef Name="Angebot_x003a_Nr" Ascending="FALSE"/>
</OrderBy>
<Where>
<And>
<Eq>
<FieldRef Name="Mitglieder_IstKundeSteuerberatungBerechnet"/>
<Value Type="Lookup">Ja</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">WIBE</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">CONT</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">BCHECK</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">VORSCHAU</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">IMMO</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">BAU</Value>
</Eq>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">KONZ_BUSPLA</Value>
</Eq>
</Or>
</Or>
</Or>
</Or>
</Or>
</Or>
</And>
</Where>
</Query>
<ViewFields>
<FieldRef Name="Attachments"/>
<FieldRef Name="Title"/>
<FieldRef Name="Angebot"/>
<FieldRef Name="Status"/>
<FieldRef Name="Kunde"/>
<FieldRef Name="Projektleiter1"/>
<FieldRef Name="Projektleiter2"/>
<FieldRef Name="Assistent"/>
</ViewFields>
<Joins>
<Join Type="INNER" ListAlias="Kunden">
<Eq>
<FieldRef Name="Kunde" RefType="Id"/>
<FieldRef List="Kunden" Name="ID"/>
</Eq>
</Join>
<Join Type="INNER" ListAlias="Mitglieder">
<Eq>
<FieldRef List="Kunden" Name="Mitglied2" RefType="Id"/>
<FieldRef List="Mitglieder" Name="ID"/>
</Eq>
</Join>
</Joins>
<ProjectedFields>
<Field Name="Mitglieder_IstKundeSteuerberatungBerechnet" Type="Lookup" List="Mitglieder" ShowField="IstKundeSteuerberatungBerechnet"/>
</ProjectedFields>
It worked fine until I upgraded from 2016 to 2019. Now in the ULS I read Die Spalte 'Mitglieder_IstKundeSteuerberatungBerechnet' ist nicht vorhanden. Möglicherweise wurde sie von einem anderen Benutzer gelöscht.
, the column is not present, might be deleted by a user. SharePoint errors are almost useless, they rarely tell the real problem. This type of error is often thrown if a CSOM query has some problem. In this case the column obviously exists, but it is a calculated one and as you can see by the query, it is a joined one.
So, what happened from 2016 to 2019?
The funny thing, IF in the UI I click on Edit Page, the view works...
If I run the query on the Server using Powershell, it works:
Add-PSSnapin *SharePoint*
$web = get-spweb "http://portal/abteilungen/unternehmensberatung"
$leistungen = $web.GetList("http://portal/abteilungen/unternehmensberatung/Lists/Leistungen")
$where = @"
<Where>
<And>
<Eq>
<FieldRef Name="Mitglieder_IstKundeSteuerberatungBerechnet"/>
<Value Type="Lookup">Ja</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">WIBE</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">CONT</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">BCHECK</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">VORSCHAU</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">IMMO</Value>
</Eq>
<Or>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">BAU</Value>
</Eq>
<Eq>
<FieldRef Name="Art_x003a_Titel"/>
<Value Type="Lookup">KONZ_BUSPLA</Value>
</Eq>
</Or>
</Or>
</Or>
</Or>
</Or>
</Or>
</And>
</Where>
"@
$viewFields = @"
<FieldRef Name="Attachments"/>
<FieldRef Name="Title"/>
<FieldRef Name="Angebot"/>
<FieldRef Name="Status"/>
<FieldRef Name="Kunde"/>
<FieldRef Name="Projektleiter1"/>
<FieldRef Name="Projektleiter2"/>
<FieldRef Name="Assistent"/>
"@
$joins = @"
<Join Type="INNER" ListAlias="Kunden">
<Eq>
<FieldRef Name="Kunde" RefType="Id"/>
<FieldRef List="Kunden" Name="ID"/>
</Eq>
</Join>
<Join Type="INNER" ListAlias="Mitglieder">
<Eq>
<FieldRef List="Kunden" Name="Mitglied2" RefType="Id"/>
<FieldRef List="Mitglieder" Name="ID"/>
</Eq>
</Join>
"@
$projectedFields = @"
<Field Name="Mitglieder_IstKundeSteuerberatungBerechnet" Type="Lookup" List="Mitglieder" ShowField="IstKundeSteuerberatungBerechnet"/>
"@
$query = new-object Microsoft.SharePoint.SPQuery
$query.Query = $where
$query.ViewFields = $viewFields
$query.Joins = $joins
$query.ProjectedFields = $projectedFields
$items = $leistungen.GetItems($query)
$items.Count