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
SQLTRY_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
die Komponente welche in OCT eingebettet ist, ist hier beschrieben https://docs.telerik.com/kendo-ui/controls/data-management/spreadsheet/end-user/user-guide ( es sind aber nur zu OCT passende Funktionen aktiviert)
die verfügbaren Formeln sind hier zu finden https://docs.telerik.com/kendo-ui/controls/data-management/spreadsheet/end-user/list-of-formulas
ACHTUNG: Nicht alle Formeln werden auch vom Powerloading unterstützt, es funktionieren nur die folgenden Formeln
sowie die von uns zusätzlich implementierte Funktion: IFERROR
die unterstützten Tastatur Shortcuts sind hier zu finden https://docs.telerik.com/kendo-ui/controls/data-management/spreadsheet/end-user/list-of-shortcuts
Es scheint Excel Formeln zu geben, die nicht dokumentiert sind (oder per Alias verwendet werden), z.B. Runden() = Round() ist verwendbar aber nicht dokumentiert