Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
+49 (0) 351/850 33-0

Die 80% Regel – Berechnete Spalten in SharePoint 2010

Berechnete Spalten in SharePoint waren schon immer etwas hakelig zu bedienen. Mit SharePoint 2010 ist dies nun endlich kein Problem mehr – sollte man eigentlich annehmen können. Dass dies nicht der Fall ist, durfte ich gestern wieder einmal festellen.

Angenommen ein Nutzer erstellt sich eine Liste mit verschiedenen Spalten und eine dieser Spalten stellt ein Datum dar. Nun könnte dieser Nutzer auf die wahnsinnige Idee kommen eine weitere Spalte hinzuzufügen, welche lediglich die Jahreszahl der Datumsspalte anzeigt. Für solche Zwecke bietet SharePoint den Spaltentyp „Berechnet“. Mit Hilfe dieses Spaltentyps lassen sich ohne Entwicklung Inhalte einer oder mehrerer Spalten in einer aggregieren. Selbst komplexe Berechnungen sind möglich.

Vorghehensweise:

Unser ahnungsloser Nutzer erstellt nun solch eine Spalte, nennt Sie Jahr und trägt eine Formel ein.

Die Formel lautet wie folgt:

=TEXT(YEAR([Erstellt]),“0″)

Mit Hilfe dieser Formel wird das in der Spalte „Erstellt“ enthaltene Datum verwendet um weitere Berechnungen damit auszuführen. Durch das Steuerwort TEXT und der Formatierungsangabe „0“ kann die Ausgabe als Text und ohne Komma erfolgen. Würde eine Formel wie „=YEAR([Erstellt])“ verwendet werden, wäre das Ergebnis folgendes: 2,010.

Ergebnis:

Erwartungsgemäß erhält unser Nutzer nun keine Spalte, welche die Jahreszahl enthält sondern folgende modische Fehlermeldung:

Die Formel enthält einen Syntaxfehler oder wird nicht unterstützt.

Hier endet das Szenario. Nach weiteren 2h des erfolglosen Versuchens habe ich genervt aufgegeben. Ausdrücke wie Year()… scheinen tadellos zu funktionieren. Werden „komplexere Ausdrücke“ wie TEXT oder beispielsweise TODAY verwendet, scheitert SharePoint!

Versuch Nr.2 :

Meist hilft es ja, wenn man über ein Problem einfach mal eine Nacht schläft. Gesagt – getan. Im zweiten Anlauf habe ich den SharePoint Designer 2010 installiert, die Liste aufgerufen und im Reiter „Liste“ die Funktion „In SharePoint Designer bearbeiten“ aufgerufen.

Über die „Spalte hinzufügen“ Funktion des SharePoint Designers habe ich nun eine Berechnete Spalte hinzugefügt. Die Formel für diese Spalte ist die gleiche wie im ersten Versuch.

Ergebnis:

Überraschenderweise stellt SharePoint nun den richtigen Wert in der Liste dar (2010). Die Spalteneinstellungen sowie die Formel sind genau die, welche auch in der Einstellung über die Oberfläche vorgenommen wurden.

Warum SharePoint die Methode über die Benutzeroberfläche nicht mag konnte ich leider nicht herausfinden. Vielleicht hilft dieser Workaround jedoch dem Einen oder Anderen.

Update:

Dank Ronnys Kommentar ist die Ursache des Problems gefunden:

Anscheinend ist die Ursache ein Bug im SharePoint 2010. Laut MSDN Erläuterung zur Verwendung der Berechneten Felder werden die Anweisungen mit Komma getrennt. Dem ist aber nicht der Fall. SharePoint 2010 unterstützt über die Oberfläche keine Kommas. Statt dessen muss ein Semikolon verwendet werden. Folglich lautet die Formel mit Semikolon geschrieben so:

=TEXT(YEAR([Erstellt]);“0″)

Wird die Formel so über die Oberfläche eingegeben wird kein Syntaxfehler mehr bemängelt. Bei Verwendung des SharePoint Designers können Kommas verwendet werden.

Bei 2007 musste man glaube ich noch mit deutschen Funktionsnamen (Jahr, Monat, heute) rechnen. Bei deiner Formel ist an sich nur das Komma falsch und muss durch ein Semikolon ersetzt werden.
=TEXT(YEAR([Erstellt]);“0″)
2010 Foundation macht dann daraus ein übersetztes =TEXT(JAHR(Erstellt);“0″)

Hallo Ronny,

tatsächlich hast du mit deinem Semikolon Recht. Die Übersetzung, also ob Jahr oder Year etc. übernimmt SP2010 mittlerweile zuverlässig.

Mir ist jedoch unklar weshalb jetzt aufeinmal Semikolons verwendet werden. Laut MSDN (unter TEXT Funktion) (http://msdn.microsoft.com/en-us/library/bb862071.aspx) wird ein Komma verwendet. SharePoint Designer selbst akzeptiert auch das Komma.

Vielen Dank für den Hinweis.

VG,
Torsten

Ob Semikolon oder Komma verwendet werden muss ergibt sich aus der Sprache des installierten Systems. Also immer beachten ob man auf einem deutschen oder englischen System arbeitet

Hallo zusammen,

mit den deutschen Funktionsnamen funtioniert es auf jeden Fall dafür erstmal danke. Kann mir jemand erklären, wass es mit dem „0“ auf sich hat? Warum wird dieses Parameter verlangt?

DANKE, DANKE, DANKE!!!

Hab auch ungefähr eine Stunde investiert, um herauszufinden, dass es wohl an der TEXT-Funktion liegt. Dabei ist es wie du mitgeteilt hast, das Komma. Ersetzt man es durch ein Semikolon, klappt es!

🙂 🙂 🙂

Die Formel soll =TEXT(YEAR([Erstellt]),”0000″) lauten.

Super, Super, Super.
Benutze englischsprachigen SP…habe Komma verwendet.
=TEXT(YEAR([Erstellt]),“0″) ohne Vernwendung des Designers.

Hat alles nicht funktionert, aber mit dieser Formel: =TEXT(Erstellt;“yyyy“)

Kommentar hinterlassen


Pin It on Pinterest