Skip to main content
Skip table of contents

1.4. Verwendung von Formeln in Produkten

Auf dieser Seite ist erläutert, wie Sie Formeln in Templates verwenden können und was dabei zu beachten ist.

Version: Dieser Artikel ist mindestens gültig ab der Version 5.5.


1. Voraussetzungen

Es wird benötigt:

  • eine Fabrik mit Produktlinie und Produkt im Bereich der Datenerfassung


2. Verwendungsanleitung

2.1. Überblick

OCT ermöglicht es in einer Wertreihe der Datenerfassung mit Formeln zu arbeiten, welche den Excel Formeln sehr ähnlich sind. Diese werden von einer Web-Spreadsheet Komponente bereitgestellt und decken einen Teil des Formelumfangs von Excel ab.

Bitte machen Sie nicht Ihr umfangreiches Excel Formelwissen zur Grundlage des Designs von OCT.

In Excel sind die Formeln der Motor Ihrer Kalkulation. In OCT sind die Formeln die Würze, der Motor ist die Datenbank !

Formeln sind gut geeignet:

  • wenn Daten primär manuell erfasst erfasst werden

  • wenn die Formel primär in einer Zeile arbeitet (A = B+C)

  • wenn es keine tiefe Schatelung der Formel gibt (wenn die Formelzeile für Ihre Formel zu kurz ist, ist die Formel wahrscheinlich zu lang)

  • wenn Sie den Wert, welchen die Formel berechnet nur im Produkt brauchen (als optische / anschauliche Würze beim Blick in das Produkt) - aber nicht später per Abfrage auswerten wollen

Formel sind weniger geeignet

  • wenn die Werte in Produkten (teilweise) importiert werden

  • wenn per Formel ganzen Spalten durchsucht werden

Formeln sind nie geeignet

  • Werte aus anderen Produkten zu laden

  • die Summe mehrerer Produkte zu zeigen

Was ist der Grund ? Der Formelwert wird neu berechnet sobald man das Produkt betritt. Die Datenbank kann die Formel nicht neu berechnen - daher ist die Formel der Feind der Automatisierung. Falls die Datenbank Werte importiert, welche in eine Formelberechnung eingehen, muss Sie danach erst einen Unterstützungsprozess starten. Dieser startet den OCT Server, welcher unsichtbar jedes Produkt öffnet, neu berechnet und speichert (Powerloading).

Der Motor der Datenbank ist SQL. Formeln können Sie in vielen Fällen durch SQL Script ersetzen. Dieses kann idealerweise

  • die Werte in einem Produkt rechnen / eintragen (wird beim Laden des Produkts ausgeführt)

  • die Werte aller Produkte dieses Templates neu berechnen (wird per Pipeline ausgeführt)


2.2. Allgemein

  • um Formeln zu bearbeiten sollte die Seite in den Designmodus geschalten werden, dadurch

    • werden Zeilen - und Spaltenköpfe eingeblendet

    • wird die Formelleiste dauerhaft sichtbar

    • werden die Wertreihen vom Typ “XLS-Strict” bearbeitbar, welche sonst geschützt sind

  • die Formelnamen müssen in englisch erfasst werden - um Formel von deutsch nach englisch übersetzen, kann ein Tool wie dieses verwendet werden https://de.excel-translator.de/translator/ (danch

  • Kopieren aus Excel - Formeln können nur als Text (aus der Bearbeitungsleiste kopiert) für eine Zelle aus englischem Excel kopiert werden, ein kopieren im Block funktioniert nicht

  • Formeln müssen mit einem Gleichheitszeichen “=” beginnen, sie dürfen nicht, wie in Excel auch möglich mit “+” starten (auch wenn sie zeitweise funktionieren, sie werden auf jeden Fall vom Powerload ignoriert)

  • Punkt / Komma als Dezimaltrennzeichen und Komma / Semikolon als Trenner von Formelteilen müssen passend zu eingestellten Sprache verwendet werden

  • das ziehen von Formelfeldern mit relativer Formelanpassung ist unterstützt

  • das "Durchschießen" von Formeln (per Doppelklick auf untere Ecke) wie in Excel ist leider nicht möglich, es gibt statt dessen

    • die Funktion "Füllen bis zum Ende" im rechten Mausmenü

    • man kann statt dessen mit der Tastenkombination arbeiten STRG+C → SHIFT+STRG+PFEIL UNTEN → STRG+V

  • beim Bearbeiten von vorhandenen Formeln, immer erst ganz ans Ende der Formel klicken und dann ENTER drücken - nicht ENTER drücken solange der CURSOR noch mitten in der Formel steht

  • Beim Editieren bestehender Formeln, sollte man die Strg Taste beim anklicken von Zellen gedrückt halten. Dann wird die vorhandene Zellreferenz nicht ersetzt, sondern die neue Zellreferenz davor eingefügt

  • Ob eine Zelle leer ist, sollte man mit ISBLANK(A1) prüfen nicht mit WENN(A1=””;…) - Beispiel siehe weiter unten im Text

  • Formeln sollten immer einen Wert passend zum Typ der Wertreihe zurückgeben - in einer nummerischen Wertreihe muss also eine Formel immer zu einem nummerischen Ergebnis führen

    • nicht Fehlerzweige die zum falschen Typ führen =WENN(A5=1;0,33;”Fehler”)

    • nicht nummerische Zeilen auf leeren Text enden lassen =WENN(A=B;1;””)

    • wenn Formeln den falschen Typ liefern, speichert die Datenbank diesen nicht - somit wird der aus der Datenbank geladene Wert 0 von der Formel mit leer ““ überschrieben - und Zelle erscheint grün als geändert


2.3. Zugriff auf IDs und Globalattribute im Template

Sowohl die StrukturIDs (Factory, Productline, Product) als auch die Globalattribute werden in einen ausgeblendeten Bereich des Produks geladen und können per Formel referenziert werden. Dieser Bereich ist identisch für horizontale und vertikale Ausrichtung eines Templates:

  • in Zelle B22 steht die FactoryID

  • in Zelle B23 steht die ProductLineID

  • in Zelle B24 steht die ProductID

  • in Zelle B25 steht Globalattribut1

  • in Zelle B26 steht Globalattribut2

  • etc.


2.4. Formeln im Zusammenhang mit skalierter Speicherung

Werte werden in OCT immer mit einer festen Nachkommastelle skaliert gespeichert (z.B. Skalierung 100 = 2 Nachkommastellen) Sofern eine Formel mehr Nachkommastellen zur Laufzeit berechnet, erscheint der Wert als gerundet in der Anzeige.

  • z.B. die Formel =0,5 * 7,01 ergibt mathematisch 3,505 in der Datenbank wird aber bei Skalierung 2 der Werte 3,51 gespeichert und angezeigt

  • Es kann jedoch trotzdem mit Formelfeldern korrekt weitergearbeitet werden, da diese bei Öffnen des Templates neu berechnet werden.
    Multipliziert man das Ergebnis der Formel mit 2, ergibt sich 7,01 und nicht 7,02, wie es bei einer Berechnung mit den gerundeten Werten der Fall gewesen wäre.

  • Vorsichtig muss man jedoch bei der Eingabe in Inputfelder sein. Trägt man in ein solches Feld beispielsweise eine 3,505 ein, wird der Eintrag nur bis zum speichern als 3,505 behandelt und danach als gerundete 3,51


2.5. Formeln mit Datumsangaben

Datumsangaben in der Produktdatentabelle

  • Sollten immer als numerische Spalte mit Skalierung 1 angelegt werden

  • Formatiert als “Eingabe Datum”

  • bei der Erfassung erscheint dann der Tageskalender

  • das Datum wird intern als Zahl gespeichert

  • Typische Datumsformeln wie MONTH(..) können auf das Feld angewendet werden

  • diese Datumswerte sind sprachfest, zeigen also ein zur Sprache passendes Datumsformat bei Aufruf in verschiedenen Sprachen

  • im SQL kann aus der Datumzahl per folgendem Befehl ein DATE Format erzeugt werden

    SQL
    TRY_CONVERT(DATE,DATEADD(day,(ValueInt)-2,'19000101'))

Datumangaben aus Globalattributen

Datumsangaben in Globatattributen können über den B25-B50 Bereich an die Produktdatentabelle durchgereicht werden und dort in Formeln verarbeitet werden

  • ACHTUNG: diese Datumsangaben sind immer Strings

  • die Erfassung am Globalattribut gewährleistet nicht, das ein gültiger Datumswert erfasst wird

  • der String hat keinerlei Sprachbezug

  • daher ist für Globalattribte zu empfehlen

    • Datumswerte im ISO Format erfassen 20221004 für den 4. Oktober 2020, diese lassen sich international gleich auflösen

    • sofern der Tag nicht unbedingt nötig ist, mit Periodenstrings zu arbeiten (2022-11 etc.), welche als Drop-Down Liste angeboten werden

2.6 Beispiele für Formeln mit anderer Schreibweise als in Excel

Problematik

Excel Schreibweise

Webclient Alternative

Bemerkungen

Prüfung auf leere Zelle

=WENN(A1="";1;2)

WENN(ISBLANK(A1);1;2)

Datumsdifferenz in Tagen

= DATEDIF(Datum1, Datum2, "d")

=Date(Jahr,Monat,Tag) - Date(Jahr,Monat,Tag)

Datum aus der TimeID generieren

=Datum(Jahr,Monat,Tag)

=Date(Jahr,Monat,Tag)


Wochentagermittlung

=WOCHENTAG(Datum;2)

=Weekday(Datum;1)

Typ 2 steht für Montag = 1, wird im WebClient nicht verarbeitet, es muss mit Typ 1 (Sonntag = 1) gerechnet werden

3. Hintergrundinformationen

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.