Rechenformeln für Tabelle und Datenbank

Allgemeines zu Rechenfunktionen und Formeln

Die hier beschriebenen Rechenfunktionen sind im »Rechenfeld« Dialog der Tabellenkalkulation im »Grafik« menü → »Rechenfeld...« erreichbar. Berechnungen sind entsprechend gekennzeichnet: Tabellenfelder tragen auf dem Bildschirm einen kleinen Winkel in der linken oberen Ecke. Datenbankfelder mit berechneten Inhalten werden grün dargestellt.

Außerdem können die Berechnungen im Datenbankteil »Papyrus Base«…

  • im »Feldeigenschaften« Dialog auf der Seite »Rechenfeld«
  • im Datenfeld-Dialog für Datenbank-Reports und
  • im Dialog für Globales Suchen und Ersetzen in Datenbank-Tabellen

genutzt werden.

Es sind verschiedene Synonyme in die Formeln einsetzbar.

In Papyrus Word Tabellen kann auch statt einer Beispiel-Referenz »A1« jede andere Referenz auf ein Tabellenfeld stehen (z.B. »C4«). Das gilt auch für eine namentliche Feldreferenz (z.B. »[FELDLABEL]«) auch von Feldern anderer Tabellen oder eine simple Zahl. In der Datenbank kann es auch der Name eines Datenbank-Feldes oder einer Variablen sein.

Die Vorgänge zu in Papyrus möglichen Rechenfunktionen sind hier wie folgt weiter beschrieben:

  • 1.1 Der Formelinterpreter (funktionierende Schreibweisen)
  • 1.2 Error: Reference source not found
  • 1.4
  • 1.5 Error: Reference source not found

Dann folgen die Übersichts-Tabellen aller Rechenfunktionen in Papyrus:

  • Ansprechen von Feldern und Feldinhalten (Referenzierung)
  • Trigonometrie
  • Grundrechenarten und weitere »normale« Berechnungen
  • Besondere Zahlenwerte
  • Text-Zeichenketten-Operationen (String-Op.)
  • Datentypen für Tabellenfelder und Datenbankfelder
  • Währungs-Umrechnungen (europäische Alt-Währungen vom und zum EURO)
  • Suchabfragen und bedingte Berechnungen (IF/THEN)
  • Teilwerte und Eigenschaften von Zahlen
  • Statistik und Wahrscheinlichkeitsrechnung
  • Datums- und Zeitformate
  • Auswertungsfunktionen für tabellarische Datenbank-Reports

Der Formelinterpreter (funktionierende Schreibweisen)

In der Suchzeile in Datenbank-Tabellenfenstern wird folgende Syntax akzeptiert:

  • Strings (Textzeichenketten) können »einfach so« dastehen. Sie müssen in einfache oder doppelte Anführungszeichen gesetzt werden, wenn Uneindeutigkeiten wie Leerzeichen oder Schlüsselwörter im Suchbegriff enthalten sein sollen.
  • <Feldname> <Vergleichsoperator> <Wert>
  • <Feldname> <Vergleichsoperator> <Feldname>
  • AND (Synonym einfach ein Leerzeichen), OR, XOR, NOT (und Synonyme)
  • Klammern

An allen anderen Stellen, wo Formeln vorkommen (also in Reports, im »Rechenfeld« der Datenbank-Feldeigenschaften sowie im »Rechenfeld«-Dialog für Papyrus Word Tabellen), muss die striktere Syntax eingehalten werden, Textzeichenketten müssen immer in Anführungszeichen stehen.

Funktionsnamen und Operatoren haben Vorrang vor Feld- und Relationsnamen, aber Letztere gehen vor alternativen Synonymen von Funktionsnamen/Operatoren. Man kann also auf ein Feld »Str« nicht zugreifen (weil dies ein Formel-Befehl zur Umwandlung einer Zahl in eine Zeichenkette ist), wohl aber auf ein Feld »unicode« (Synonym für den Befehl ASCII).

Wenn man nach dem Editieren einer Formel den Dialog erneut aufruft, wird die Formel in der sogenannten »kanonischen Syntax« ggf. leicht verändert dargestellt, die wie folgt aussieht:

  • Alle Funktionsnamen werden ggf. automatisch gegen den Hauptbegriff ausgewechselt
  • Feldnamen in Originalschreibweise
  • Strings in einfachen Anführungszeichen (SQL-Standard)

Beim Ändern der Formel für ein Rechenfeld wird die Vorschau jedes Mal aktualisiert, wenn die aktuelle Eingabe eine syntaktisch korrekte Formel ergibt.

Formeln können auch mit Kommentaren versehen werden.

Schreiben Sie hierzu einfach hinter die Zeile Ihren Erklärungstext, abgegrenzt mit »//«:

 

Oder aber Kommentare über mehrere Zeilen, eingerahmt von »/*« und »*/«:

Fehlerbehandlung in Formeln

In der Datenbank wird eine sofortige Analyse der Syntax durchgeführt, sobald ein Rechenbefehl in den Dialog »Rechenfeld« von »Feldeigenschaften« eingetragen wird (Menü »Datenbank«). Die Rechenanweisung wird ebenso in der Liste der Felder dargestellt.

So erhält man einen ersten Hinweis darauf, ob Papyrus die Eingabe akzeptiert hat und interpretieren kann.

In der Papyrus Tabellenkalkulation werden Fehler (z.B. eine Division durch Null) als ***Fehler*** dargestellt.

Ungültige Datentypen (z.B. String nicht in Zahl konvertierbar) werden mit ***Ungültig*** markiert.

Zyklische Feldreferenzen (wenn bspw. in einer Formel, die in einem Feld C4 Bezug auf eben dieses Feld C4 genommen wird, was nicht geht) sind natürlich illegal, führen aber nicht zu einer Endlosschleife, sondern zu ***Fehler***. Allerdings kann so etwas wie »Feld := Feld + Feld« sehr lange rechnen (siehe Datumsgrenze).

Umwandlung anderer Datentypen in Strings

Die folgenden Umwandlungen gelten für die Wandlung von Daten in einen String (»String« bezeichnet eine Textzeichen-Kette, bspw. »abc«) durch implizite Typkonvertierung bei »Feldeigenschaften« oder mit VAL (steht für engl. »value«, Wert).

Bei Umwandlung einer Zahl in einen String wird wie allgemein üblich (beispielsweise in SQL) das Punkt-Format verwendet, z.B. 1234.56, immer ohne führende und anhängende Nullen.
Wenn eine Zahl < -1012 oder > 1012 oder als kleiner Bruch -10-6 < Zahl < 10-6 ist, wird eine Exponentendarstellung im e-Format (3456 => 3,456 x 103 => 3.456e3) benutzt.

Bei einer Umwandlung aus einem String kann Punkt-Format oder e-Format benutzt werden, aber immer mit Dezimalpunkt und ohne Tausendertrenner.

Datum und Uhrzeit und Umwandlung von/nach Strings:

Bei Umwandlung in einen String werden Termin-Daten als JJJJMMTT dargestellt, Zeiten als HH:MM[:SS[.FFF]], d.h. Sekunden und Millisekunden werden nur ausgegeben, falls sie nicht Null sind. Andere Darstellungs-Optionen kann man durch die Addition von Teil-Strings erreichen, die man durch String-Operationen wie »LEFT« etc. erhält.

Datum+Zeit wird als <Datum>T<Zeit> ausgegeben.

Bei Umwandlung aus einem String kann außer obigem Format auch »JJJJ-MM-TT« (SQL-Standardformat) oder »TT.MM.JJJJ« (Papyrus-eigen) benutzt werden. Hier sind führende Nullen nicht nötig, und zweistelliges Jahr wird unter 50 auf 20JJ, ab 50 auf 19JJ ergänzt.

Man macht also Datumsvergleiche z.B. so:

Datum > ’17.11.99’

Relationen in Rechenformeln der Datenbank

Zum Anlegen von Relationen geht man über die Dialogseite »Relationen« aus dem »Feldeigenschaften« Dialog. Man kann Relationen aber auch in die Rechenfeld-Dialogseite eintragen.

Zur Manipulierbarkeit – z.B. dem weiteren Verrechnen relational »geholter« Werte – erscheint eine Relation automatisch auch im »Rechenfeld«-Dialog. Das Ergebnis der Relation kann hier für weitere Rechnungen gebraucht und weiter verrechnet werden.

Relationale Referenzen werden »Relationsname« → »Primärfeldname« geschrieben, also z.B. »Adresse→Firma«.

Die Namen der Relationen haben eine von den Feldnamen getrennte Verwaltung und können daher mit Feldnamen übereinstimmen. Achten Sie darauf, dass Sie dabei nicht durcheinanderkommen.

Ansprechen von Feldern und Feldinhalten (Referenzierung)

C4 Papyrus Word Tabelle: Ansprechen einer Zelle zum Rechnen oder Inhalt übernehmen. Hier z.B. Wert aus Feld Zeile 4, Spalte 3 (C)
A3..C5 Papyrus Word Tabelle: Zellbereich, der alle Zellen im Rechteck von »A3« links oben bis (= Operator »..«) »C5« rechts unten beinhaltet.
[FELDLABEL] pap. Word Tabelle: absolute Tabellenfeld-Referenz über Feldnamen (vergeben im »Tabellenfeld«- oder auch im »Rechenfeld«-Dialog)

Die eckigen Klammern sind fakultativ, nur notwendig, wenn das referenzierte Feldlabel noch nicht angelegt wurde

Datenbankfeldname pap. Base: Werte-Inhalt eines definierten Feldes dieses Datensatzes dieser Tabelle
Relation→Feldname pap. Base: Über eine vorhandene Relation verknüpftes Feld eines Datensatzes einer anderen (oder auch der gleichen) Tabelle
[C:\HOLMICH.PAP#

FELDLABEL]

Absolute Feldreferenz von benanntem Feld »FELDLABEL« aus der Datei »C:\HOLMICH.PAP«
COLUMN / SPALTE Nummer der Spalte, in der sich die Rechenformel befindet (nur in Papyrus Word Tabellen)
LINE / ZEILE Nummer der Zeile, in der sich die Formel befindet (nur in Papyrus Word Tabellen)
/* mehrzeiliger Kommentar */ Alles zwischen dem den Kommentar einleitenden »/*« und dem den Kommentar abschließenden »*/« (inkl.) wird nicht interpretiert und kann beliebigen Text enthalten

/* …

… */

Inhalt // Kommentar In dieser Zeile wird alles rechts vom »//« (inkl.) wird nicht interpretiert

Gundrechenarten und weitere »normale« Berechnungen

+ – * / Grundrechenarten: Addition, Subtraktion, Multiplikation; Division; Formel z.B. »A1+B1«; »A3*1,16«
( ) Klammerung von zuerst zu berechnenden Funktionen; z.B. »A1(B2+3)«
A1^3 Potenz, z.B. »A1^3« ist die dritte Potenz vom Wert von Feld »A1«
SQRT(A1)

WURZEL(A1)

ROOT(A1)

RACINE(A1)

Quadratwurzel, hier z.B. vom Wert von Feld »A1«
LOG(A1)

LOGARITHMUS(A1)

LOGARITHME(A1)

Natürlicher Logarithmus von Feld »A1« (zur Basis »e«)
LOG10(A1)

LOGTEN(A1)

Logarithmus von Feld »A« zur Basis 10
EXP(A1) Potenz »A1« zur Basis E, synonym zu »E^A1«
FAC(A1)

FAK(A1)

FAKULTÄT(A1)

FACULTY(A1)

FACULTE(A1)

Fakultät von Feld »A1« = A1! = A1 * (A1-1) * (A1-2) * … * 1; bei A1=5 also 5*4*3*2*1=120
MOD(),

x MOD y

Modulo-Wert (lt. Mathematik, wichtig z.B. für Verkryptung)
LET var = … Datenbank: Weist der Variablen »var« einen bestimmten Wert zu

Trigonometrie

SIN(A1) / SINUS (A1)

COS(A1) / COSINUS(A1)

TAN(A1) / TANGENS(A1)

Sinus / Cosinus / Tangens von Feld A1
ASIN(A1) ACOS(A1) ATAN(A1) Arcsinus / Arccosinus / Arctangens von Feld A1
SINH(A1) COSH(A1) TANH(A1) Sinus hyperbolicus (Cosinus hyp. / Tangens hyp.) von Feld A1

Besondere Zahlenwerte

PI Die Zahl griechisch »Pi« auf mind. 16 Stellen genau
E Die Zahl »e« als Basiszahl des natürlichen Logarithmus auf mind. 16 Stellen genau
COLUMN

SPALTE

Nummer der Spalte, in der sich die Rechenformel befindet (nur Papyrus Word Tabellen)
LINE ROW

ZEILE

Nummer der Zeile, in der sich die Formel befindet (nur Papyrus Word Tabellen)
ERROR

FEHLER

Schreibt in roter Schrift den Wert »Fehler« in das Feld
MISSING

LEER

Das Feld ist leer (was logisch ein Unterschied zum Wert »0« ist; außerdem wird im Feld nichts dargestellt).
COPY

KOPIE

Aktuelle Serienbrief-Nummer bei Generierung eines Serienbrief-Dokuments (funktioniert NICHT bei sofortigem Ausdruck eines Serienbriefs)
variable In Papyrus Base im Menü »Datenbank« bei »Eigenschaften« können Papyrus-globale Variablen definiert werden, die in allen Berechnungen genutzt werden können

Datentypen für Tabellenfelder und Datenbankfelder

Der Datentyp eines Rechenergebnisses ergibt sich meist aus dem Datenfeld der Formel.

Bei Rechnungen mit zwei Operanden geht der Typ eines Felds vor dem Typ eines Literals (eines festen vorgegebenen Werts) (Feld geht vor Festwert, Regel 1).

Sind beide Operanden Datenfelder, richtet sich das Ergebnis und sein Datentyp nach dem Datentyp des linken Operanden (Regel 2):

<Zahlenfeld> + »1« }

»1« + <Zahlenfeld> } => 1 + <Zahlenfeld>, alles folgt Regel 1

<Zahlenfeld> + 1 }

<Zahlenfeld> + <Stringfeld> => Zahlenaddition (Regel 2)

hier ergibt also die umgedrehte Reihenfolge der Datentypen eine Textzeichenkette:

<Stringfeld> + <Zahlenfeld> => Stringaddition

Wenn man im letzten Fall keine String-, sondern eine Zahlenaddition erzwingen will, muss man schreiben (»VAL« wandelt einen String in eine Zahl, siehe nächstes Kap.):

VAL(<Stringfeld>) + Zahlenfeld => Zahlenaddition

String Textzeichenketten – Feldtypen Standard, Text, Bild
Fließkommazahl (»double«) Genauigkeit des Typs »double« unter Windows: double ist ein 64 bit-Format: 1 für Vorzeichen, 11 für den Exponenten und 52 für die Mantisse. Daraus resultiert ein Bereich von +/- 1.7308 mit 15 Stellen.
Zahl ganzzahlig oder 1-6 Nachkommastellen (fixpoint integer) Der Bereich hängt von der Anzahl der Nachkommastellen ab:
Windows insgesamt 64 bits, also -9.2218 bis +9.2218 / (10 Nachkommastellen)
Datum /

Uhrzeit /

Zeitpunkt /

Zeitdauer

Daten werden vom 1.1.0001 bis in die Ewigkeit als »Julianischer Tag« dargestellt (es werden einfach die Tage ab 1.1.0001 durchgezählt)
Schaltjahre werden berücksichtigt. Die unregelmäßigen Kalenderumstellungen (z.B. von Julianisch auf Gregorianisch) werden ignoriert. Uhrzeit wird als Millisekunden dargestellt.
Additionen / Differenzen ergeben Tage für Daten oder Sekunden für Uhrzeit bzw. Datum+Uhrzeit). Zeitintervalle werden als [Tage] [HHH:MM[:SS[.ffff]]] dargestellt.Daten können optional mit Wochentag ausgegeben werden. Im »Intelligenten« Format werden für die aktuelle Woche »gestern« / »heute« / »morgen« angezeigt und bis zu 6 Tage zurückliegende Daten nur als Wochentag.

Zusätzlich kann man statt eines Datums +<Tage> oder -<Tage> eingeben.

Wahrheitswerte z.B. Ergebnisse von Vergleichen, werden als integer 0 (falsch, FALSE) oder 1 (wahr, TRUE) dargestellt. Bei Bedingungen (z.B. IF) wird jeder von 0/NULL/Leerstring verschiedene Wert als »WAHR« angesehen.
Kommentare Mit »//« kann man hinter Formeln auch wahlfreien Text als Kommentar in den Formeltext mit aufnehmen. Mit

/* Kommentar …. Kommentar */

sind sogar mehrzeilige Kommentare möglich

Text-/Zeichenketten-Operationen (String-Operationen)

Der Ausdruck in der Klammer der folgenden Funktionen darf entweder direkt eine Textzeichenkette (ein »String«) oder eine Referenz auf ein Tabellen-/Daten-Feld sein, das einen String enthält

Strings (Textzeichenketten) sind immer Unicode-Strings beliebiger Länge.

Literale (direkt eingegebene feste Werte) kommen in einfache (ANSI SQL) oder doppelte Anführungszeichen. String-Vergleiche geschehen immer ohne Groß-/Klein-Unterscheidung.

Die Vergleichsoperatoren > < etc. sortieren nach der üblichen Duden-Sortierreihenfolge.

IdR. orientiert sich die erst genannte Form dieser Funktionen am Datenbank-Standard SQL.

Negative oder über 65536 liegende Parameter für Positionsangaben ergeben das Ergebnis FEHLER.

ASCII(str)

UNICODE(str)

Liefert den ISO-Latin-ASCII- bzw. Unicode-Wert (bei Zeichen über 255) des ersten Zeichens im String. Ergibt 0 für leere Strings
CHAR(zahl) CHR() Textzeichen aus ASCII-/Unicode-Wert bilden
STR(zahl etc.) Wandelt Zahl/Datum/Uhrzeit in einen String um
VAL(str) Wandelt String in Zahl (double byte) um.
FLOAT(zahl od. str) Wandelt eine ganze Zahl oder einen String in eine Fließkommazahl um
CAPITAL(str) Setzt den ersten Buchstaben des Strings auf groß
UCASE() UPPER() Setzt alle Buchstaben des Strings auf Großbuchstaben
LCASE() LOWER() Setzt alle Buchstaben des Strings auf Kleinbuchstaben
LEN(str) LENGTH() Ergibt die String-Länge in Anzahl Zeichen
LOCATE(str , search[, start]) INSTR() Liefert Position in »str«, ab dem »search« vorkommt. Man kann mit »start« vorgeben, ab wo gesucht wird. »0«, wenn nicht gefunden
SUBSTRING(str, start[, n]) MID() Liefert n Zeichen ab Position start in str; wenn n fehlt, nur ein Zeichen. Zu große Werte für start/n liefern Leerstring/rechten Teil des Strings.
CONCAT(str1, str2) Entspricht str1+str2, ergibt aber zwingend einen String
LEFT(str, n) Linke n Zeichen, oder gesamter String falls n > LENGTH(str)
RIGHT(str, n) Rechte n Zeichen, oder gesamter String falls n > LENGTH(str)
REPLACE(str, search, replacestr) Ersetzt alle Vorkommen von search in str durch replacestr
TRIM(str) links und rechts Leerzeichen entfernen
LTRIM(str) links Leerzeichen entfernen
RTRIM(str) rechts Leerzeichen entfernen
REPEAT(str, n) String str n-mal wiederholen
SPACE(n) String mit n Leerzeichen
TAB TAB() Tabulator-Zeichen, entspricht CHR(7) (für Datenbank-Report)
CR CR() Absatzende-Zeichen, entspricht CHR(10) (für Datenbank-Report)
STR(zahl,vorkomma,nachkomma) Formatiert »zahl« so, dass es immer »vorkomma« Vorkommastellen enthält (mit Nullen aufgefüllt) und »nachkomma« Nachkommastellen, mit Komma abgesetzt und mit Nullen aufgefüllt

Dient der formatierten Ausgabe von Zahlen in Datenbank-Reports

Währungs-Umrechnungen

Landeswährung aus Euro DM(Euro)

DEM(Euro)

MARK(Euro)

Berechnet den DM-Wert aus einem Euro-Wert
BEF() LUF() Berechnet Belgische bzw. Luxbrg. Franc aus einem Euro-Wert
FRAN() FRF() Berechnet Französische Franc aus einem Euro-Wert
IEP() Berechnet irische Pfund aus einem Euro-Wert
ITL() LIRE() Berechnet italienische Lire aus einem Euro-Wert
NLG() GULD() Berechnet niederländische Gulden aus einem Euro-Wert
ATS() SCHI() Berechnet österreichische Schilling aus einem Euro-Wert
GRD() Berechnet griechische Drachmen aus einem Euro-Wert. Möglicherweise bald wieder ein aktueller und hochvariabler Wert.
ESP() PTS() PESE() Berechnet spanische Peseten aus einem Euro-Wert
PTE() ESCU() Berechnet portugiesische Escudos aus einem Euro-Wert
FIM() Berechnet finnische Mark aus einem Euro-Wert
Euro aus Landeswährung EUDM() EUDEM() Berechnet den Euro-Wert aus einem DM-Wert
EUBEF() EULUF() Berechnet den Euro-Wert aus Belgischen bzw. Luxemburger Franc
EUFRF() EUFF() Berechnet den Euro-Wert aus Französischen Franc
EUIEP() Berechnet den Euro-Wert aus irischen Pfund
EUITL() EULI() Berechnet den Euro-Wert aus italienischen Lire
EUNLG() EUGU() Berechnet den Euro-Wert aus niederländischen Gulden
EUATS() Berechnet den Euro-Wert aus österreichischen Schilling
EUGRD() Berechnet den Euro-Wert aus griechischen Drachmen

Könnte bei Wiedereinführung der Drachme stark steigen.

EUPTS() EUES() Berechnet den Euro-Wert aus spanischen Peseten
EUPTE() EUES() Berechnet den Euro-Wert aus portugiesischen Escudos
EUFIM() Berechnet den Euro-Wert aus Finnischen Mark

Suchabfragen und bedingte Berechnungen (IF / THEN)

IF Bedingung THEN Ausdruck1

ELSE Ausdruck2

WENN … DANN … SONST …

Beispiel:

IF A1 > 5 THEN 1000 ELSE 2000

Ist eine Bedingung logisch »wahr«, bestimmt Ausdruck1 den errechneten Feldinhalt; ist Bedingung logisch unwahr, falsch, bestimmt Ausdruck2.

Ist Bedingung falsch, wird der Wert »MISSING« als Ergebnis eingetragen und das Feld ist LEER

IF … THEN … (IF … THEN) Verschachteltes IF/THEN … sollte man klammern
ENDIF (optional) Zur besseren Übersichtlichkeit können Sie ein »IF« auch selbst mit diesem ENDIF Befehl beenden
RETURN Ausdruck (optional)

RESULT …

ERGEBNIS …

Gibt in »wahrer« Umgebung Ausdruck als Wert zurück – als Erleichterung für komplizierte Ausdrücke gedacht
XE „Vergleichsoperatoren“Vergleichsoperatoren

Priorität: »NOT« bindet am stärksten; »AND« bindet stärker als »OR«/»XOR«, aber weniger als »NOT«.

Im Zweifel setze man Klammern; geklammerte Bereiche werden zuerst ausgeführt.

rom UND NICHT logicware ODER Papyrus UND NICHT base

entspricht also

(rom UND (NICHT logicware)) ODER (Papyrus UND (NICHT base))

> < größer / kleiner (Strings nach Duden-Sortierung)
<= >= kleiner gleich / größer gleich
= »gleich«; bei Datenbank-Abfragen Suche nach Wortanfang im ersten Wort des Feldes
== Bei DB-Abfragen Suche nach kompletten Feldübereinstimmungen
=: bei DB-Abfragen Suche nach kompletten Feldübereinstimmungen
: Bei Datenbank-Abfragen Suche nach Wortanfängen irgendwo im Feld
!= !== !=: !: bei DB-Abfragen jew. Negierung der obigen Vergleichsoperatoren (wie vorangestelltes NOT)
!= =! <> ungleich
AND & &&

UND

Logisches UND (beide Bedingungen müssen für ein logisches »wahr« erfüllt sein)
OR ODER Logisches »und-oder« (eine oder beide Bedingungen müssen erfüllt sein)
XOR EXCLUSIVEOR Logisches »entweder-oder« (genau eine – nicht beide – Bedingung muss erfüllt sein)
!

NOT NICHT NO NON

Negiert den Wahrheitswert eines logischen Ausdrucks

Teilwerte und Eigenschaften von Zahlen

ABS(A1) Absolutwert von Feld »A1«, belässt also positive Zahlen, wie sie sind, währenddessen negative Werte positiv werden
SIGN(A1)

SGN(A1)

Vorzeichen von Feld »A1«, bei positiven Zahlen »1«, bei negativen »-1«
RND(A1) ROUND(A1)

RUNDE(A1) ROND(A1)

Kaufmännisch auf ganze Zahl gerundeter Wert von Feld »A1«
TRUNC(A1) / FIX(A1) Vorkommazahl von Feld »A1«; schneidet bei Dezimalbrüchen die Nachkommastellen ab
FRAC(A1) Nachkommazahl von Feld »A1«; lässt bei Dezimalbrüchen die Vorkommastellen unberücksichtigt (ist also immer 0, …)
FLOOR(A1) / INT(A1) Nächstkleinere ganze Zahl eines Dezimalbruches. Nur (!) bei positiven Zahlen identisch mit »TRUNC(A1)
CEIL(A1) CEILING(A1) Nächstgrößere ganze Zahl eines Dezimalbruches

Statistik und Wahrscheinlichkeitsrechnung

SUM(A1..E6) / SUMME(A1..E6) Bildet die Summe aller numerischen Feldinhalte des Bereichs von »A1« bis Feld »E6«, also von insgesamt 30 Feldern
NCELLS(A1..E6) Anzahl Felder (= »Zellen«) im Bereich A1 bis E6
NVALID(A1..E6) Anzahl Zellen im Feldbereich A1 – E6, die gültige Zahlenwerte tragen
NINVALID(A1..E6) Anzahl Zellen im Bereich A1 bis E6, die KEINE gültige Zahlenwerte tragen
NEMPTY(A1..E6) Anzahl Zellen im Bereich A1 bis E6, die LEER sind (NICHT aber »0«!)
MEAN(A1..E6)

MITTEL(A1..E6)

Statistischer Mittelwert aller gültigen Zahlenwerte im Feldbereich A1 – E6
DEVIATION(A1..E6) STD(A1..E6) Statistische Standardabweichung aller gültigen Zahlenwerte im Feldbereich A1 – E6
VARIANCE(A1..E6)

VARIANZ(A1..E6)

Statistische Varianz aller gültigen Zahlenwerte im Feldbereich A1 – E6
MSQUARES(A1..E6) Statistische mittlere Quadratwurzel aller gültigen Zahlenwerte im Feldbereich A1 – E6
VALID(A1) OK(A1)

GUELTIG(A1)

Liefert »1«, wenn Feld A1 ein gültiger numerischer Wert ist, sonst »0«
INVALID(A1)

UNGUELTIG(A1)

Liefert »1«, wenn Feld »A1« leer (NICHT »0«!) oder Text ist; sonst »0«
MISSING / LEER Das Feld ist leer (was logisch ein Unterschied zum Wert »0« ist; außerdem wird im Feld nichts dargestellt).

Zeit- und Datumsformat-Operationen

CURDATE() DATE

CURRENT_DATE

Gibt das heutige Datum als Datums-Typ zurück
CURTIME() TIME()

CURRENT_TIME()

Gibt die aktuelle Uhrzeit (Sekunden-genau) als Zeit-Typ zurück
SYSDATE()

SYSDATE

Gibt eine Zeichenkette (kein Datum!) mit dem aktuellen Datum als TT.MM.JJJJ zurück
SYSTIME()

SYSTIME

Gibt eine Zeichenkette (keine Zeit!) mit der aktuellen Uhrzeit als HH:MM:SS zurück
NOW() GETDATE()

CURRENT_TIMESTAMP()

Gibt den aktuellen Zeitpunkt (Sekunden-genau) als Datum+Uhrzeit zurück
HOUR(time) STUNDE() Stunde (0-23) aus Uhrzeit/Zeitpunkt extrahieren
MINUTE(time) Minute (0-59) aus Uhrzeit/Zeitpunkt extrahieren
SECOND(time)

SEKUNDE()

Sekunde (0-59) aus Uhrzeit/Zeitpunkt extrahieren
DAYOFMONTH(date)

DAY() TAG()

Tag (1-31) aus einem Datum/Zeitpunkt extrahieren
MONTH(date) MONAT() Monat (1-12) aus einem Datum/Zeitpunkt extrahieren
YEAR(date) JAHR() Jahr (1-9999) aus einem Datum/Zeitpunkt extrahieren
DAYOFWEEK(date)

DOW() WOCHENTAG()

Wochentag (1-7, 1=Sonntag bis 7=Samstag) eines Datums/Zeitpunkts berechnen
DAYOFYEAR(date)

DOY() JAHRESTAG()

Tag im Jahr berechnen (1-366, der 1.1. ist Tag 1, der 31.12. Tag 366 in Schaltjahren, sonst Tag 365)
QUARTER(date)

QUARTAL()

Quartal berechnen
WEEK(date)

WOCHE()

Woche (1-53) im Jahr berechnen. Der 1.1 gehört immer zu Woche 1, die 2. Woche fängt am ersten Sonntag danach an.
MOONPHASE(date)

MONDPHASE()

Mondphase im Bereich 0-7: 0 Neumond, 1-3 zunehmend, 4 Vollmond, 5-7 abnehmend. Wichtig für Werwölfe.
DAYNAME(date)

MONTHNAME(date)

CDOW() CMONTH()

Name des Wochentags bzw. Monats, erzeugt aus Datum oder Zahl (Tage 1-7 bzw. Monate 1-12). In der Datenbank hängt die Sprache von den Einstellungen der Datenbank ab.
CTOD(string) Wandelt eine Zeichenkette in ein Datum.
DTOC(date) Wandelt ein Datum in eine Zeichenkette TT.MM.JJ
TOTALMS(time)

TOTALSECONDS()

TOTALMINUTES()

TOTALHOURS()

TOTALDAYS()

Gibt für ein Zeitintervall bzw. eine Uhrzeit die insgesamt enthaltenen Millisekunden/Sekunden/Minuten/Stunden/Tage zurück, z.B. für Zeitabrechnungen.Es wird immer abgerundet. Für Daten/Zeitpunkte liefert TOTALDAYS() den sog. Julianischen Tag zurück, d.h. die Tage sind ab Tag 1 = 1.1.0001 durchgezählt (ohne Berücksichtigung von historischen Kalenderumstellungen)

Auswertungsfunktionen für tabellarische Datenbank-Reports

Um in einem Report eine Auswertung über die Daten einzubinden, definieren Sie zwei Bereiche. Im »Datenbereich« erfahren alle Datensätze ihre Ausgabe. Im Kopf oder Abschluss des Reports können Text oder auch Daten nur einmal ausgegeben werden.

Für den »Datenbereich« markieren Sie den Teil Ihres Reports, der die zu wiederholenden Ausgaben enthält, und wählen im Kontextmenü »Datenbereich festlegen«.

Die unten genannten Befehle können Sie auch außerhalb des Datenbereiches benutzen. Bspw. definieren mit »SUM(Feldname)« eine Summe über alle Werte, die im Feld »Feldname« ausgegeben wurden.

SUM(Feldname)

SUMME()

Summe aller Inhalte von »Feldname« über alle reportierten Datensätze. Das Ergebnis ist wie »Feldname« formatiert, nur bei Text wird das Ergebnis eine Fließkommazahl.
MIN(Feldname) Kleinster Wert aller reportierten Inhalte von »Feldname«. Leere Felder zählen nicht mit
MAX(Feldname) Größter Wert aller reportierten Inhalte von »Feldname«
COUNT(*) ANZAHL() Gesamte Anzahl der reportierten Datensätze
NVALID(Feldname)

GUELTIGE()

Anzahl der nicht-leeren und gültigen Feldinhalte über alle reportierten Datensätze
NINVALID(Feldname)

UNGUELTIGE()

Anzahl der ungültigen Feldinhalte (z.B. Text statt Zahl) über alle reportierten Datensätze
NEMPTY(Feldname)

LEERE()

Anzahl der leeren Feldinhalte über alle reportierten Datensätze
AVG(Feldname)

MITTEL()

AVERAGE()

Arithmetisches Mittel aller reportierten Inhalte von »Feldname«. Leere Felder gehen nicht ein. Entspricht SUM(Feldname) / NVALID(Feldname)
DEV(Feldname)

STANDARDABWEICHUNG

Standardabweichung aller reportierten Inhalte von »Feldname«. Leere Felder gehen nicht ein.
VAR(Feldname)

VARIANZ()

Varianz (Quadrat der Standardabweichung) aller reportierten Inhalte von »Feldname«. Leere Felder gehen nicht ein.
MSQUARES (Feldname)

MITTLEREQUADRATE()

Arithmetisches Mittel der Quadrate aller reportierten Inhalte von »Feldname«

Rechner- und Anwender-Daten sowie Textstatistik

Mit diesen Befehlen können Sie auf bestimmte Namens-Werte und Bezeichnungen zugreifen, die vom Betriebssystem oder von Papyrus bereit gestellt werden.

Diese Daten können auch in Querverweisen (aus dem Menü »Einfügen«) benutzt werden (Querverweis-Dialog auf »beliebiger Ausdruck« stellen).

BENUTZERNAME Der Anwender-Login, der beim System angemeldet ist.
RECHNERNAME Name Ihres Computers im System / Netz
DATEIGROESSE Die Größe dieser Datei in Bytes
ANZAHL_ZEICHEN Anzahl aller Buchstaben im Dokument
ANSCHLAGSZAHL Anzahl aller getippten Zeichen inkl. Leerzeichen etc.
ANZAHL_WÖRTER Anzahl aller Wörter im Dokument
ERSTELLT,

DOKUMENT_ERSTELLDATUM

Zeit, zu der Sie das Dokument neu angelegt haben.
BEARBEITUNGSZEIT Zeit, die Sie dies Dokument bisher bearbeitet haben.
ZULETZTGEDRUCKT Zeit, zu der dies Dokument das letzte Mal gedruckt wurde
ZULETZTGESPEICHERT Zeit, zu der das letzte Mal abgespeichert wurde
GESPEICHERTVON Benutzer-Systemlogin, das zuletzt gespeichert hat

Kontaktdaten für Ihr Text-Dokument

Diese Werte sind für eine automatische »Titelei« und das Impressum wichtig. Papyrus holt sie sich aus »Dokument« → »Dokument-Eigenschaften« → »Titelei (Impressum etc.)«.
Vorlage dafür sind die Werte aus »Einstellungen« → »Dokumente« → »Autorendaten«.
AUTOR, DOKUMENT_AUTOR Autor des Dokuments
DOKUMENT_HERAUSGEBER Verantwortlicher Herausgeber des Dokuments
DOKUMENT_VERLAG Verlag des Buches / Dokuments
DOKUMENT_COPYRIGHT Der Inhaber des Copyrights Ihres Werks
DOKUMENT_ADDRESSE Adresse des für das Dokument Verantwortlichen: Verlag, Herausgeber oder Autor (wenn im Self Publishing)
DOKUMENT_TITEL, TITEL Der Titel Ihres Dokuments (den Sie im Dialog vergeben,

nicht der Titel der Datei)

DOKUMENT_UNTERTITEL Ein ergänzender Lang- oder Untertitel Ihres Werks
DOKUMENT_ISBN Eine evtl. für dies Werk vorhandene ISBN-Nummer
DOKUMENT_JAHR Das Jahr der Ersterscheinung des Werks
DOKUMENT_AUFLAGE Die aktuelle Auflage dieses Werks
DOKUMENT_AUFLAGENJAHR Das Jahr, in dem die aktuelle Auflage gedruckt wird
DOKUMENT_VERTRIEBSWEG Verlag, E-Book, Self Publishing – bestimmt Ihr Impressum
DOKUMENT_DRUCKEREI Die Druckerei für Ihr Werk (ggf. mit Ort oder sogar Adresse)
DOKUMENT_LAND Das Land, in dem Ihr Werk erscheint
DOKUMENT_RECHTE Rechte für verwendete Abbildungen oder Übersetzungen
DOKUMENT_SCHRIFTEN Verwendete Schriften, die über Standard-Fonts hinausgehen
DOKUMENT_INTERNET Internet-Seite mit weiteren Informationen
DOKUMENT_EMAIL E-Mail-Adresse für Kontakte zum Dokument
DOKUMENT_TELEFON Telefonnummer für Kontakte zum Dokument
DOKUMENT_AUTORVITA Eine Kurzbeschreibung des Autors (z.B. für den Klappentext)
DOKUMENT_ABSTRACT Eine kurze Buchbeschreibung (z.B. für den Klappentext)
DOKUMENT_THEMA Einordnung / Thema Ihres Dokuments
DOKUMENT_BEMERKUNG Ihre Bemerkungen zu diesem Dokument
DOKUMENT_FIRMA Name Ihrer Firma, sofern Ihr Buch beruflich entstand
STICHWOERTER Stichwörter, die Sie für Ihr Dokument angelegt haben wollen.
DOKUMENT_KATEGORIE Eine Kategorie, unter die dies Dokument fällt.
DOKUMENT_VORLAGE Dateiname der Vorlage, aus der dies Dokument entstand

Formatierungen und Befehle für Datenbank-Reports

Mit diesen Befehlen können Sie in einem Report bestimmte Formatierungen auslösen. Eingabe in Report-Platzhaltern in eckigen Klammern: »[CR]«
PICREF(Pfad) Fügt ein externes Bild mit Pfadangabe in einen Report ein
CR Neue Zeile (bzw. neuer Absatz mit »hartem« Ende)
TAB Sprung an die nächste Tabulator-Position in der Zeile
LF LINEEND LINEBREAK Neue Zeile (als »weiches« Absatzende)
FF NEWPAGE PAGEBREAK Neue Seite
NEWCOLUMN COLUMNBREAK Neue Spalte (bei mehrspaltigen Seiten)
CALL(Programm,Parameter) Ruft im Report ein extern ausführbares Programm (ggf. mit Pfad) auf. Aufruf-Parameter mit Leerzeichen.
ABORT(Fehlertext) Bricht einen Report mit Alarmbox mit Fehlertext ab. Zeilenumbruch im Fehlertext mittels ’|’.
MESSAGEBOX(Icon, Text, Button(s)) Erzeugt eine Alarm-Box. Icons: 0 – kein; 1 – Ausrufezeichen; 2 – Fragezeichen; 3 – Stopp; 4 – Info. ‚|‘ erzeugt einen Zeilenumbruch. Die Button-Texte werden mit ’|’ getrennt angegeben (kein Text zeigt »OK«). Rückgabewert ist die Button-Nummer (mit »0« beginnend), bei Abbruch derhöchste Wert.
REPORT(Reportpfad) Ruft einen anderen Report (ggf. mit Pfad) auf. Die Reportvorlage muss für diese Datenbanktabelle eingetragen sein.
SUM(Feldname) Summe über alle reportierten Datensätze. Bei ›Text‹ oder ›Text oder Zahl‹ wird das Ergebnis eine Fließkommazahl.
MIN(<Feldname>) kleinster Wert. Leere Felder zählen nicht mit.
MAX(<Feldname>) größter Wert
COUNT(*) Gesamte Anzahl der bearbeiteten Datensätze
NVALID(<Feldname>) Anzahl der nicht-leeren und gültigen Feldinhalte
NINVALID(<Feldname>) Anzahl der ungültigen Feldinhalte (z.B. Text statt Zahl)
NEMPTY(<Feldname>) Anzahl der leeren Feldinhalte
AVG(<Feldname>) Arithmetisches Mittel. Leere Felder gehen nicht ein.
DEV(<Feldname>) Standardabweichung. Leere Felder gehen nicht ein.
VAR(<Feldname>) Varianz (Quadrat der Standardabweichung)
MSQUARES (<Feldname>) Arithmetisches Mittel der Quadrate
SAVE(Dateipfad) Speichert eine Kopie des aktuellen Reports. Formate: *.pap, *.rtf, *.doc, *.html, *.pdf, *.pap.pdf.

„Report direkt speichern“ im Report-Dialog verhindert, dass für so einen Report ein Fenster geöffnet wird.

Variablen-Namen für den E-Mail-Versand in Datenbank-Reports

EMAIL_RECIPIENT Empfänger der E-Mail
EMAIL_RECIPIENT_NAME zusätzlich Angabe des realen Namens des Empfängers
EMAIL_RECIPIENT_ROLE

EMAIL_TO

normale Empfänger-Liste
EMAIL_CC »Carbon Copy« Liste, also Empfänger, die die Mail nur als Kopie empfangen sollen
EMAIL_BCC »Blind Carbon Copy« Liste, also Empfänger, die die Mail nur als Kopie empfangen sollen und dabei für andere Empfänger unsichtbar bleiben sollen
EMAIL_SUBJECT Betreff-Zeile der Mail
EMAIL_LOGIN_USER='<Benutzername>‘ Wenn der Mail-Server eine Authentifizierung verlangt, gibt man hier den Login ein
EMAIL_LOGIN_PASSWORD='<Passwort> Wenn der Mail-Server eine Authentifizierung verlangt, gibt man hier das Passwort ein
LET EMAIL_ATTACHMENTS=’File1,File2‘ Papyrus erzeugt eine Multipart MIME E-Mail mit Dateianhängen
LET EMAIL_HTML= 0: nur Text, 1: Text und HTML, 2: nur HTML
LET EMAIL_PDF= Der Papyrus-Text wird als PDF Datei angehängt
EMAIL_PDF_FILE Name der angehängten PDF-Datei
EMAIL_PLAIN_TEXT Rein-Text als Alternativ-Text für HTML-Mails
EMAIL_LOG_PATH Pfad für die Log-Datei
EMAIL_LOGGING Schalter für das Logging des Reports
Last updated by Matthias Wenzel on Dezember 14, 2017