Topic : ATOS-Magazin Juni/Juli 1997
Author : Das ATOS-Team
Version : 3/97 (2.6.1997)
Subject : ATOS Diskettenmagazine
Nodes : 319
Index Size : 8070
HCP-Version : 5
Compiled on : Atari
@charset : atarist
@lang :
@default :
@help : ATOS Hilfe
@options : -i -s +zz -t2
@width : 70
@hostname : CAB
@hostname : CAB
@hostname : CAB
@hostname : CAB
@hostname : CAB
@hostname : CAB
View Ref-FileRechnen im Bericht Das ATOS-Magazin 3/97Von einem Bericht aus kann man auch endlich innerhalb der Druckausgabe
auf die Programmiersprache (Rechenfunktion) von Phoenix zugreifen.
Damit ist es jetzt nicht mehr notwendig, nur für die Ausgabe bestimm-
ter Berechnungen extra Felder oder Tabellen anlegen zu müssen. Auch
ist man damit wesentlich flexibler, wenn es darum geht, die Ausgabe
eines Feldinhaltes und/oder Textes vom Inhalt bestimmter Datenfelder
abhängig zu machen, als mit den entsprechenden Reportfunktionen
({Feldname, "Text"} und {%Feldname}). Meine im Vorabbericht in der
letzten ATOS-Ausgabe aufgestellte Behauptung, daß so etwas überhaupt
nur in einem Report möglich sei, muß ich also hiermit revidieren.
Wie funktioniert das?Zunächst müssen Sie dafür ein Textobjekt anlegen, da in einem Daten-
feld-Objekt keine Berechnungen möglich sind (gerade hier macht es sich
negativ bemerkbar, daß sich der Objekttyp nachträglich nicht mehr
ändern läßt). Diesem Objekt wird nun eine Rechnung zugewiesen, indem
Sie mit einem Doppelklick in den Objektrahmen das Eigenschaften-Fen-
ster öffnen und unter "Text" die Rechnung eintragen. "Was?", werden
Sie jetzt fragen, "in diesem mickrigen Editfeld soll ich eine ganze
Rechnung unterbringen?" Nun, es geht wirklich! Dabei können Sie
zwischen zwei verschiedenen Methoden wählen.
Erste Möglichkeit: Sie können die Rechnung hier direkt als Text
eintragen. Zum Editieren solch einer "internen" Rechnung steht Ihnen
jedoch tatsächlich nur dieses Editfeld zur Verfügung - und leider läßt
sich der Text weder ins Klemmbrett kopieren noch an einen OLGA-Server
übergeben. In der Praxis werden Sie diesen Weg also nur bei sehr ein-
fachen Rechnungen beschreiten. Die zweite, "elegantere" Möglichkeit:
Sie schreiben die Rechnung ganz normal wie bisher in einem Rechenfen-
ster (F8) und geben dann im Bericht als Text für das betreffende
Objekt einfach nur den Namen dieser Rechnung an. Dabei muß jedoch eine
Besonderheit beachtet werden, die ich weiter unten noch näher
erläutere.
Ganz einfach ...Ich beschreibe einmal das Vorgehen anhand von zwei Beispielen. Eine
einfache Anwendung ist das Ausdrucken von Adressen-Etiketten. Da die
Position der Objekte im grafischen Bericht prinzipbedingt feststeht,
können Sie hier nicht einfach jeweils einen Platzhalter für "Vorname"
und "Name" einsetzen - je nach Länge des Vornamens ergäbe das eine
unschöne Lücke. Um diese zu vermeiden, fassen Sie mit dem Additions-
Operator die beiden Felder (mit dazwischengeschaltetem Leerzeichen)
zusammen:
Das Gleichheitszeichen am Anfang ist nötig, damit Phoenix erkennt, daß
es sich hier um eine Rechnung handelt. Ansonsten gelten die gleichen
Regeln wie bisher beim Schreiben einer Rechnung: fester Text wird in
doppelte Hochkommas eingefaßt; Feldnamen, Variablen und Zahlen nicht.
Dies war ja nun eine sehr einfache Rechnung, die Sie ohne weiteres
direkt im Eigenschaften-Fenster eingeben können; sie wird in diesem
Fall, wie auch in der Abbildung zu erkennen war, nicht mit einem
Semikolon abgeschlossen. Daher hier noch ein zweites Beispiel ...
... und etwas komplizierterSie möchten eine Liste Ihrer Kakteensammlung ausdrucken. Einige der
Kakteen haben zusätzlich einen Varietätsnamen, dieser soll mit voran-
gestelltem var. hinter dem Artnamen erscheinen:
Notocactus crassigibbus Ritt.
Notocactus ottonis (Lehm.) Berg. var. vencluianus Schütz
Bisher hätten Sie dazu dieses var. überall im Feld "Varietät" mit
eingeben müssen, weil es im Report nicht möglich ist, abhängig vom
Inhalt eines Feldes einen Text vor dem Feldinhalt auszugeben. Mit
Phoenix 5.0 läßt sich das Ganze nun viel eleganter lösen. Sie öffnen
ein Rechnungsfenster (F8) und schreiben folgende Rechnung:
var erg;
if Varietät<>'' then
erg=Art+" var. "+Varietät;
else
erg=Art;
end;
erg=return(erg);
Hier muß ich auf eine wichtige Besonderheit hinweisen: soll ein
Rechenprogramm, das mehr als ein Kommando enthält, in einem Bericht
verwendet werden, dann müssen Sie am Schluß dieser Rechnung die Funk-
tion return benutzen. Diese hat die Aufgabe, das Rechnungsergebnis an
den Bericht zu übergeben (die Wertzuweisung in der return-Funktion muß
aus syntaktischen Gründen erfolgen, obwohl sie eigentlich überflüssig
ist; hier kann also eine beliebige Variable stehen).
Diese Rechnung speichern Sie nun z.B. unter dem Namen "B: Name" ab.
Das B: macht sie in der Rechnungsliste auf den ersten Blick als von
einem Bericht verwendete Rechnung kenntlich und verbessert so die
Übersicht.
Im Berichtfenster geben Sie dann für das betreffende Textobjekt nur
noch den Rechnungsnamen an:
=@B: Name
Der Klammeraffe zeigt an, daß danach keine Rechnung folgt, sondern ein
Rechnungs-Name; dieser darf nicht in Hochkommata eingeschlossen wer-
den. Auch hier muß zu Beginn das Gleichheitszeichen stehen, sonst
druckt Phoenix die Zeile so aus, wie sie da steht.
In eine solche Rechnung lassen sich auch die vom Report her bekannten
Variablen für Seitenzahlen, Systemdatum etc. verwenden. Da sie weder
im Handbuch noch in der Online-Hilfe erwähnt werden, möchte ich sie
hier kurz erklären:
{PAGE} (Seitenzahl)
{COUNT} (laufende Datensatz-Nummer)
SYSDATE (Systemdatum)
SYSTIME (Systemzeit)
SYSTIMESTAMP (Systemdatum und -zeit)
Um also beispielsweise die Datensatznummer in der Form "Nr. 1" auszu-
geben, müssen Sie folgendes eingeben:
="Nr. "+{COUNT}
Mehrzeilige Textfelder