Das ATOS-Magazin 1/00
papyrus: OFFICE 8

# Rechenfunktionen in der Datenbank

Seit Version 8 unterstützt papyrus auch Rechenfunktionen in der Datenbank. Dieses ist auch im Hinblick auf moderne Datenbankanwendungen zwingend erfoderlich.

### Wo können wir mir Ihnen rechnen?

Die Rechenfunktionen können im Dialog "Feldeigenschaften" (Menü "Datenbank") für die einzelnen Felder der Datenbank angewendet werden. Hier wird zwischen einer Voreinstellungs-Formel, die beim Anlegen eines neuen Datensatzes ausgeführt wird, und der Formel, die ständig erneuert wird, unterschieden. Außerdem können Rechenfunktionen in den Reports und beim "Globalen Ersetzen" verwendet werden.

Bei den Reports gibt es dafür im Dialog "Datenfeld", den man mittels Rechtsklick auf den Datenfeldplatzhalter im Kontextmenü der Report-Vorlage erreichen kann, eine Popup-Liste, wo man sich zwischen einfachem Datenfeld und Formel entscheiden muß. Im Editfeld gibt man dann die Formel ein, was sich besonders sinnvoll für Bedingungen nutzen läßt (wann soll welches Feld wie ausgegeben werden). Leider muß man hier intensiv spüren, wie unübersichtlich die Eingabe längerer Formeln in ein einzeiliges Editfeld ist.

### Eine Funktion braucht jeder! Auch Rechenfunktionen?

papyrus unterstützt in der Datenbank alle Rechenfunktionen, die schon in der Tabellenkalkulation zur Verfügung stehen. Also die Grundrechenarten, Potenzen, Statistik, Trigonometrie, Teilwerte und Eigenschaften von Zahlen, besondere Zahlenwerte usw. Auch das Rechnen mit Bedingungen (if, then, else) ist natürlich möglich.

Darüber hinaus wurden die Rechenfunktionen um diverse Funktionen zum Rechnen mit Zeit, Datum und Text-Zeichenketten erweitert. Diese Erweiterungen kommen seit der Version 8.06 auch der Tabellenkalkulation zu gute.

In papyrus gibt es zunächst keine strikten Datentypen, das heißt, dass keine Typüberprüfung stattfindet. So werden zum Beispiel Numerische Datentypen in String gewandelt, wenn man an ihnen eine Stringfunktion anwendet. Bei mehrdeutigen Operatoren wird bei Datenbankfeldern aber Bezug auf den Datentyp des Feldes genommen.

Datenbankfelder werden in Formeln einfach mit ihrem Namen benannt, wobei Groß- und Kleinschreibung keine Rolle spielt. Strings (Textzeichenketten) müssen immer in Anführungsstrichen stehen. Bei der Berechnung gehen Operatoren und Funktionsnamen vor Feld und Relationsnamen. Letztere gehen aber vor alternativen Synonymen von Funktionsnamen.

Intern wird mit folgenden Datentypen gerechnet:

- String
- Fließkommazahl(double)
- Zahl ganzzahlig oder 1-6 Nachkommastellen (fixpoint integer)
- Datum und Uhrzeit
- Wahrheitswerte

Der Datentyp ergibt sich aus dem Datenfeld der Formel. Bei zwei Operanden richtet sich der Datentyp nach dem Typ des Datenfeldes, d.h., dass feste Werte hinten an stehen. Sind beide Operanden Datenfelder so ist der linke Operand entscheidend. Natürlich kann man Strings auch in andere Datentypen und umgekehrt wandeln.

### Am Ende zählt nur das Ergebnis

Nun genug gerechnet! Wo sieht man nun das Ergebnis seiner Formelkünste? In den Eingabeformularen erscheinen Rechenfelder grau hinterlegt, so wie alle produzierten Felder. Berechnete Werte werden mit grünen Text dargestellt. Wird ein Feld überschrieben, wird der Text Rot dargestellt. Das Überschreiben eines Feldes muß aber zuvor in den Feldeigenschaften erlaubt worden sein.

### Heute muß man variabel sein

Auch Variablen werden von papyrus unterstützt. Damit kann man in seine Rechenfunktionen bestimmte Werte einbeziehen, die veränderbar sind. Um einer Variablen einen Wert zuzuweisen wird der Befehl "LET" benutzt. Will man der Variablen "MWST" den Wert "16" zuordnen gibt man "LET MWST=16" ein.

Um eine Variable zu erzeugen, ihr einen Anfangswert zuzuweisen oder um den aktuellen Wert zu kontrollieren, dient die Notizbuchseite "Variablen", die man über das Menü(Datenbank) im Dialog "Eigenschaften" erreicht.

Bei "Zugriffsart" kann man so sogar auf Environment-Variablen zugreifen.

Einer Variablen kann man nur in der Vorbelegungsformel eines Datenfeldes einen Wert zuweisen. Auf diesen Wert kann man natürlich von überall, wo man Rechenfunktionen einsetzen kann, aus zugreifen.

Ersetzen in ganzen Datenbanktabellen