In diesem Artikel ging es vor ein paar Tagen am Rande auch darum, wie in ein Textformular der Vortag eines Datums eingedruckt werden kann – z.B. bei einem Vertragsablauf „01.01.2008“ stattdessen „31.12.2007“. Das Problem wurde über eine spezielle Textformel gelöst, die vom Ablaufdatum einen Tag abzieht und das Ergebnisdatum ausgibt. Was kann man noch mit Datumsfunktionen in AMS-Textformularen machen?
Weithin bekannt ist, dass AMS beim Schreiben von Briefen diverse Kunden- und Vertragsdaten mit in den Brief hineinziehen kann, so dass z.B. Adressfelder oder Versicherungsscheinnummern nicht abgetippt werden müssen. Das geschieht, indem sogenannte Textvariablen in die Briefvorlage eingefügt werden. Es gibt Standardtextvariablen und Feldvariablen – beide Arten und ihre Anwendung sind in der AMS-Hilfe beschrieben.
Weniger bekannt ist, dass neben den vorgegebenen Variablen auch „Formeln“ in Briefvorlagen verwendet werden können. Mit Hilfe der Formeln kann mit den Daten aus AMS „gerechnet“ werden – z.B. Zahlen addieren, Text verändern, oder auch Datumsangaben nach vorne oder hinten verschieben.
In AMS kann dabei in den Formeln die „Clipper/dBase“-Sprache verwendet werden, die schon seit den ersten AMS-Versionen unterstützt wurde (Anmerkung hierzu: AMS.4 selbst basiert allerdings NICHT selbst auf Clipper – für die Formeln kommt die Sprache aber noch zum Einsatz, damit auch Textformulare und Formeln korrekt dargestellt werden, die unter Vorversionen von AMS.4 erstellt wurden).
Hier nun einige Beispiele für Textformeln, mit denen sich Datumsangeben berechnen lassen:
- Gestern:
[date()-1]
- Heute in sieben Tagen:
[date()+7]
- Das aktuelle Jahr:
[year(date())]
- Der aktuelle Monat:
[month(date())]
- Der aktuelle Tag:
[day(date())]
- Heute in einem Jahr:
[strzero(day(date()),2)+ "."+strzero(month(date()),2)+ "."+strzero(year(date()+1),4)]
In den obigen Beispielen kann statt der Funktion date()
, die das aktuelle Tagesdatum zurückliefert, auch ein beliebiges Datum aus AMS einfügt werden – z.B. der Ablauf eines Vertrags per dc("+++007",2)
.
Soll nun statt der Zahl des aktuellen Monats (z.B. 12 für Dezember) der Monatsname angezeigt werden, wird es komplizierter. Da AMS keine Funktion zur Verfügung stellt, mit der sich nur der reine Monatsname ausgeben lässt, muss der Monatsname z.B. aus einer Liste von Monatsnamen ausgeschnitten werden, was die zugehörige Formel etwas unhandlich macht (Achtung: Anzahl der Leerzeichen ist entscheidend, kann aber hier im Blog nicht richtig wiedergegeben werden – korrekte Version bitte aus der RTF-Datei entnehmen):
[substr("Januar Februar März April Mai Juni Juli August September Oktober November Dezember ",(month(date())-1)*10+1,10)]
Alle erwähnten Formeln habe ich, um fehleranfälliges Abtippen zu vermeiden, auch in Form einer RTF-Datei zur Verfügung gestellt, aus der die Texte und Formeln per Ausschneiden und Kopieren in eigene Formulare übernommen werden können: Datumsformeln in RTF