INGRES/RBF, Report-Writer und INGRES/VIGRAPH
5 INGRES/RBF, Report-Writer und INGRES/VIGRAPH
In diesem Kapitel werden zuerst zwei INGRES-Komponenten
dargestellt, die in Bezug zu Listenprogrammen stehen. Es
wird gezeigt, wie mit Hilfe von IN tenprogramm
erstellen.
Am Ende des Kapitels wird die INGRES/VIGRAPH-Komponente
vorgestellt, mit der die gewünschten Berichte in der
graphischen Form ausgegeben werden können.
Die Listenprogramme dienen zur formatierten Ausgabe einer
Abfrage. Im Unterschied zu INGRES/QBF, das auch das
Ändern, Einfügen und Löschen von Datenwerten ermöglicht,
können INGRES/RBF und Report-Writer nur solche Programme
spezifizieren bzw. erstellen, die für die Suche von
Datenwerten benutzt werden.
Die Listenprogramme werden bevorzugt, wenn eine Abfrage viele
Reihen einer Tabelle enthält und das Ergebnis in einer gut
lesbaren Form im zeitlichen Ablauf ständig benötigt wird. Die
Ausgabe einer Liste kann entweder auf einem Drucker, auf dem
Bildschirm oder in einer Datei erfolgen.
Die einfachsten Listenprogramme, die erstellt werden
können, werden Standard-Listenprogramme genannt. Die
Standard-Listenprogramme können bei INGRES mit INGRES/RBF
erstellt werden. Abbildung 5-1 zeigt die Ausgabe eines
Standard-Listenprogramms, das für die Tabelle arbeiten
erstellt wurde:
Abb. 5-1 Standard-Listenausgabe für die Tabelle arbeiten
Die Ausgabe eines Standard-Listenprogramms enthält, genauso
wie die Ausgabe jedes Listenprogramms, eine oder mehrere
Ausgabeseiten, von welchen jede folgende Teile beinhaltet:
- Kopfzeile (mit Datum und Uhrzeit),
- Titel,
- Spaltenüberschrift,
- Datenwerte und
- Fußzeile (mit Seitenangabe).
Bei einem Standard-Listenprogramm sind die Namen in der
Spaltenüberschrift identisch mit den Spaltennamen der
Tabelle. Die Reihenfolge dieser Namen entspricht genau der
Reihenfolge der Spalten im Tabellenschema.
Das INGRES-Subsystem
INGRES/RBF
("Report-by-Forms")
ermöglicht dem Benutzer, mit Hilfe von frames und
ohne irgendwelche Programmierkenntnisse, Listenprogramme zu
spezifizieren. Das frame von INGRES/RBF hat sehr viele
Ähnlichkeiten mit dem JoinDefs Catalog-frame. Diese
Ähnlichkeit äußert sich sowohl bei einigen Masken als
auch bei der Funktionalität. INGRES/RBF kann entweder mit
Hilfe der Funktion Reports im INGRES/MENU oder mit dem
Betriebssystemkommando rbf aufgerufen werden. (Das Kommando
rbf ist in Kapitel 15 beschrieben.)
Der Aufruf der Funktion Reports im INGRES/MENU erzeugt, bis
auf die Titelzeile, die gleiche Maske wie in der Abbildung
4-6 angezeigt. Nach der Auswahl der Unterfunktion Create und
der anschließenden Eingabe eines Tabellennamens, erscheint
die neue Menüleiste mit den folgenden Funktionen:
- Block Mode,
- Column Mode,
- Wrap Mode und
- Default Mode,
wobei jede dieser Funktionen unterschiedliche Ausgabearten
von Daten in einer Liste beschreibt.
Funktion |
Bedeutung |
Block Mode |
die Ausgabe von Datenwerten erscheint rechts neben der entsprechenden Überschrift. |
Column Mode |
die Ausgabe erfolgt spaltenweise. (Falls die Ausgabe zu lang ist, wird sie auf dem Bildschirm rechts abgeschnitten und auf dem Drucker in mehrere Zeilen umgebrochen.) |
Wrap Mode |
entspricht dem Column-Modus, wenn die Tabellenspalten in eine Zeile passen. Falls nicht, wird die Ausgabe automatisch umgebrochen. |
Default Mode |
entspricht dem Column-Modus, falls die Ausgabe in eine Zeile paßt, sonst dem Block-Modus. |
Am Beispiel der Tabelle arbeiten (Abb. 5-2) werden wir
die Erstellung der Listenspezifikation im Column-Modus
durchführen.
Abb. 5-2 Listenspezifikation für die Tabelle arbeiten
Das Funktionsmenü in Abbildung 5-2 enthält folgende
Funktionen:
Funktion |
Bedeutung |
Create |
erstellt ein neues Objekt für die Listenspezifikation. Dieses Objekt kann eine beliebige Überschrift, eine neue bzw. eine leere Zeile usw. sein. |
Delete |
löscht ein existierendes Objekt einer Listenspezifikation. |
Edit |
editiert ein existierendes Objekt einer Listenspezifikation. |
Move |
bewegt ein existierendes Objekt einer Listenspezifikation. |
Undo |
hebt die zuletzt ausgeführte Operation auf. |
Order |
definiert, welche Spalten für die Sortierfolge und Gruppenbildung verwendet und welche Aggregatfunktionen benutzt werden. |
ReportOptions |
definiert das Layot der Liste. |
übersetzt und sichert die Listenspezifikation. |
Mit der Funktion Save kann die in Abbildung 5-2 gezeigte
Listenspezifikation gespeichert und anschließend mit der
Funktion Go ausgeführt werden. Weil wir keine Änderungen
an der Spezifikation vorgenommen haben, wird daraus ein
Standard-Listenprogramm erstellt, dessen Ausgabe Abbildung
5-1 zeigt.
Die Funktionen Edit und Move werden benötigt, wenn
die Elemente der angezeigten Spezifikation eine andere
Ausgabeform haben sollen. Diese beiden Funktionen können nur
einfache Operationen (wie z.B. neue Elemente einfügen bzw.
existierende Elemente verschieben) ausführen. Um komplexere
Operationen wie z.B. Gruppenbildung durchzuführen, muß die
Funktion Order (Abb. 5-3) aufgerufen werden.
Abb. 5-3 Order Columns-frame für die Tabelle arbeiten
Die Column Name-Spalte zeigt alle Spalten der Tabelle
arbeiten an. Für jede dieser Tabellenspalten kann bei
Sequence angegeben werden, ob die Spalte für den
Sortiervorgang benutzt (ungleich 0) wird oder nicht
(=0). Die Zahlen 1,2,... definieren die Reihenfolge der
Sortierung, wobei zuerst nach der Spalte mit dem Wert
1 sortiert wird usw. Die Direction-Spalte definiert die
aufsteigende ("a") bzw. absteigende ("d") Sortierung.
Die Break-Spalte schließlich kennzeichnet mit "y" die
Tabellenspalten, die für die Gruppenbildung benutzt werden
sollen.
In Abbildung 5-3 werden damit die Spalten aufgabe und
pr_nr in dieser Reihenfolge als Sortierbegriffe verwendet.
Die Sortierung erfolgt bei beiden Spalten aufsteigend.
Zusätzlich werden die Werte der Spalte aufgabe zur
Gruppenbildung verwendet.
Mit der Auswahl der Funktion Column Options in der Maske
Order Columns können die etwaigen Aggregatfunktionen
definiert, bzw. das Layout einer Gruppenbildung beschrieben
werden. Um die Funktion ColumnOptions für die Spalte
aufgabe (Abb. 5-4) aufzurufen, muß die Schreibmarke in der
Maske Order Columns auf dieser Spalte positioniert werden.
Dasselbe gilt für die Spalte m_nr (Abb. 5-5).
Abb. 5-4 Column Options-frame für die Spalte aufgabe
Abb. 5-5
Column Options-frame für die Spalte m_nr
In Abbildung 5-4 sind die Eigenschaften der Spalte aufgabe
beschrieben. Weil diese Spalte mit der Angabe Break=y
definiert ist, enthält ihre Column Options-Maske auch
die Zeilen, in denen das Layout für die Gruppenbildung
beschrieben ist. Mit der Angabe b wird definiert, daß jeder
Datenwert dieser Spalte nur am Anfang jeder Gruppenbildung
erscheint. Die Angabe 1 in der nächsten Maskenzeile
spezifiziert die Anzahl der eingefügten leeren Zeilen nach
jeder Gruppenbildung.
Abbildung 5-5 enthält keine Angaben für Gruppenbildung,
weil mit der Spalte m_nr keine Gruppenbildung durchgeführt
wird. Diese Spalte wird aber für die Ausgabe des maximalen
Datenwertes nach jeder Gruppenbildung mit der Spalte aufgabe
benutzt. Deswegen muß, in der Over Break-Spalte und in der
Maximum-Zeile, das Zeichen "x" gesetzt werden.
Die Ausgabe der entsprechenden Liste (nach dem Sichern und
der Übersetzung der Listenspezifikation) ist in Abbildung 5-6
dargestellt.
Abb. 5-6 Listenausgabe für die Tabelle arbeiten
Im Unterschied zu INGRES/RBF, das für die Spezifikation
eines Listenprogramms keine Programmierkenntnisse erfordert,
enthält Report-Writer für die Listenprogrammerstellung eine
einfache Programmiersprache. Ein mit dem Report-Writer
erstelltes Listenprogramm kann anschließend mit dem
Betriebssystemkommando sreport übersetzt und danach mit
report ausgeführt werden. (Für die Beschreibung beider
Kommandos siehe Kapitel 15.)
Die Verwendung der Programmiersprache des Report-Writers
werden wir an einem Beispiel erläutern.
.NAME bsp0501
.LONGREMARK
Dieses Listenprogramm waehlt
Datenwerte der Mitarbeiter aus,
die in einem vom Benutzer
eingegebenen Jahr in ihren
Projekten eingestellt wurden. Alle
ausgewaehlten Mitarbeiter
werden nach Projektnummern gruppiert
und zu jeder Gruppe
wird das frueheste Einstellungsdatum
ausgegeben.
.ENDREMARK
.OUTPUT b0501.lst
.QUERY SELECT pr_nr,arbeiten.m_nr,m_name, einst_dat
FROM arbeiten, mitarbeiter
WHERE arbeiten.m_nr =
mitarbeiter.m_nr
AND
date_part ('year',einst_dat) = $jahr
.SORT pr_nr
.FORMAT
einst_dat(d"01-02-03")
/* Listenkopfbeschreibung */
.HEADER
REPORT
.NEWLINE 5
.LEFT .PRINT
"Datum:",current_date (d"February 3 1901")
.NEWLINE 3
.UNDERLINE .TAB 20 .PRINT
"Einstellungen im Jahre 1988" .NOUNDERLINE
.NEWLINE 4
.UNDERLINE .TAB 2 .PRINT "Projektnummer"
.TAB 16 .PRINT
"Mitarbeiternummer"
.TAB 35 .PRINT
"Mitarbeitername"
.TAB 55 .PRINT
"Eingestellt am:"
.NOUNDERLINE
.FOOTER REPORT
.NEWLINE 2
.CENTER .PRINT "Listenende"
.NEWLINE 1
.HEADER pr_nr
.NEWLINE 3 .TAB 2 .PRINT "Projektnummer: " .TAB 20 .PRINT
pr_nr c(4)
.FOOTER pr_nr
.NEWLINE 1
.PRINT
"-----------------------------------------------------------"
.NEWLINE 1
.TAB 2 .PRINT "Das frueheste
Einstellungsdatum ist: ",min(einst_dat)
.NEWLINE
1
.PRINT
"-----------------------------------------------------------"
.NEWLINE 1
.DETAIL
.TAB
2 .PRINT pr_nr c(4)
.TAB
16 .PRINT m_nr n(6)
.TAB
35 .PRINT m_name c(20)
.TAB
55 .PRINT einst_dat c(8)
.NEWLINE 1
Das Programm in Beispiel 5.1 wählt Datenwerte der
Mitarbeiter aus, die im Jahr, das vom Benutzer beim Ablauf
eingegeben wird, in ihren Projekten eingestellt wurden.
Alle ausgewählten Mitarbeiter werden nach Projektnummern
gruppiert, und zu jeder Gruppe wird das früheste
Einstellungsdatum ausgegeben.
Jede Report-Writer-Anweisung hat zwei Teile: Das Zeichen "."
als Präfix, gefolgt von einem Report-Writer-Schlüsselwort.
Jedes Schlüsselwort hat ein oder mehrere Kürzel, die als
Synonyme benutzt werden können.
Die Report-Writer-Anweisungen können in mehrere Gruppen
unterteilt werden, abhängig davon, welche Aufgabe sie
in einem Listenprogramm haben. Zu der ersten Gruppe
gehören sogenannte Report Setup-Anweisungen, die allgemeine
Eigenschaften eines Listenprogramms (Listenprogrammname,
SELECT-Anweisung für die Datenauswahl usw.) beschreiben. Zu
dieser Gruppe gehören folgende, in Beispiel 5.1 verwendete
Anweisungen:
- .NAME,
- .LONGREMARK,
- .OUTPUT,
- .QUERY und
- .SORT .
Die .NAME-Anweisung beschreibt den Namen des
Listenprogramms. Diese Anweisung muß als erste Anweisung
eines Report-Writer-Programms erscheinen. Unter dem
Listenprogrammnamen (in unserem Beispiel bsp0501) wird
die Listenspezifikation im INGRES-Systemkatalog gespeichert.
Diese Aufgabe führt das Kommando sreport aus. Beim Ablauf
des Listenprogramms mit Hilfe des report-Kommandos muß der
Listenprogrammname in der Kommandozeile explizit angegeben
werden. Das Kürzel .NAM ist das Synonym für .NAME.
Mit der Anweisung .LONGREMARK kann ein Kommentar, der
mehrere Zeilen umfaßt, geschrieben werden. Diese Anweisung
dient zum Dokumentieren eines Listenprogramms. Das Kürzel
.LREM ist das Synonym für .LONGREMARK. Weil der Kommentar
mehrere Zeilen lang sein kann, existiert beim Report-Writer
eine zusätzliche Anweisung - .ENDREMARK -, mit der das
Kommentarende gekennzeichnet wird. Das Kürzel .ENDREM ist
das Synonym für .ENDREMARK. Eine zweite, ähnliche Anweisung
wie .LONGREMARK ist .SHORTREMARK (.SREM), mit der ein
einzeiliger Kommentar geschrieben werden kann.
Report-Writer unterstützt auch das Dokumentieren von
Listenprogrammen mittels allgemeiner Kommentare. Den Anfang
eines solchen Kommentars bildet das Zeichenpaar "/*" und
sein Ende das Zeichenpaar "*/". Der Unterschied zwischen
den mit .LONGREMARK bzw. .SHORTREMARK erstellten Kommentaren
einerseits und den allgemeinen Kommentaren andererseits
ist, daß die ersten im INGRES-Systemkatalog gespeichert
werden und beim Aufruf des Catalog-frames von INGRES/RBF am
Bildschirm ausgegeben werden.
Die Anweisung .OUTPUT (.OUT) definiert den Dateinamen
für die Listenausgabe. Falls diese optionale Anweisung
in einem Listenprogramm nicht angegeben ist, wird die
Liste standardmäßig auf dem Bildschirm ausgegeben. (Der
Schalter "-f" des report-Kommandos kann nachträglich das
Ausgabemedium einer Liste ändern.)
Die .QUERY-Anweisung enthält eine komplette
SELECT-Anweisung, mit der Daten aus einer oder mehreren
Tabellen einer Datenbank ausgewählt werden. Die Abfragen
mittels SELECT-Anweisung sind in Kapitel 7 und 8
beschrieben. Die in Beispiel 5.1 verwendete SELECT-Anweisung
wählt Daten aus zwei Tabellen der Beispieldatenbank -
arbeiten und mitarbeiter - aus. In der WHERE-Klausel dieser
SQL-Anweisung existiert die Bedingung
date_part ('year', einst_dat) = $jahr
.
Mit der INGRES-Funktion date_part wird die Jahresangabe
der Spalte einst_dat der Tabelle arbeiten ausgewählt
und mit der Variablen jahr verglichen. (Alle Variablen
eines Report-Writer-Programms werden mit dem Präfix
"$" gekennzeichnet. Jeder Teil einer SELECT-Anweisung
(Tabellenname, Spaltenname usw.) kann durch eine Variable
ersetzt werden, die beim Ablauf des Listenprogramms durch
die Benutzereingabe ersetzt wird. Die Wertzuweisung einer
Variablen kann in der Kommandozeile des report-Kommandos
erfolgen. Falls dies unterlassen wird, wird der Benutzer vom
System aufgefordert, die Angabe nachträglich zu machen.
Hinweis.
Die Erstellung der komplexen SELECT-Anweisungen (wie in
Beispiel 5.1) soll außerhalb des Listenprogramms vorgenommen
werden. Der Weg, den wir empfehelen, ist, die entsprechende
SELECT-Anweisung mit der isql-Schnittstelle von INGRES
zu erstellen und auszutesten. Nachdem sich der Benutzer
überzeugt hat, daß die SELECT-Anweisung korrekt ist, sollte
diese Anweisung in einer Datei gespeichert und anschließend
in das Listenprogramm eingefügt werden.
Die Anweisung .QUERY muß in einem Report-Writer-Programm
angegeben werden, falls die alternative Anweisung .DATA
nicht verwendet wird. Die .DATA-Anweisung hat eine ähnliche,
aber eingeschränkte Funktionalität im Vergleich zu der
.QUERY-Anweisung. Das Kürzel .QUER ist das Synonym für
.QUERY.
Mit der .SORT-Anweisung werden die Spalten definiert, die
zur Sortierung verwendet werden. Wenn mehrere Spalten in
der .SORT-Anweisung genannt sind, definiert ihre Reihenfolge
gleichzeitig die Reihenfolge der Sortierung. Falls die
.BREAK-Anweisung in einem Report-Writer-Programm nicht
angegeben ist, spezifiziert die .SORT-Anweisung zusätzlich
die Gruppenbildung im Listenprogramm. Das Kürzel .SRT ist
das Synonym für .SORT.
Die zweite Gruppe der Report-Writer-Anweisungen
definiert die Struktur eines Listenprogramms. Zu dieser
Anweisungsgruppe gehören:
- .HEADER,
- .FOOTER und
- .DETAIL .
Die .HEADER-Anweisung spezifiziert den Beginn einer
Anweisungsgruppe, die am Listen-, Seiten- oder
Grupppenbildungsanfang ausgeführt wird. Dementsprechend kann
diese Anweisung drei unterschiedliche Angaben enthalten:
- REPORT,
- PAGE und
- spalten_name .
Die REPORT- bzw. PAGE-Angabe kennzeichnet den Beginn
der Anweisungsgruppe, die am Listen- bzw. Seitenanfang
ausgeführt wird. spalten_name ist eine in der Anweisung
.SORT bzw. .BREAK angegebene Tabellenspalte, die die beim
Gruppenwechsel auszuführende Anweisungsfolge kennzeichnet.
In Beispiel 5.1 spezifiziert .HEADER pr_nr, welche
Anweisungen bei jedem Gruppenwechsel der Spalte pr_nr
ausgeführt werden.
Die .FOOTER-Anweisung definiert den Beginn einer
Anweisungsgruppe, die am Listen-, Seiten- oder
Gruppenbildungsende ausgeführt wird. Die Syntax der
.FOOTER-Anweisung entspricht genau der Syntax der
.HEADER-Anweisung.
Mit der .DETAIL-Anweisung wird der Beginn einer
Anweisungsfolge gekennzeichnet, die bei der Ausgabe jeder
Datenzeile ausgeführt wird. Diese Anweisung hat keine
zusätzlichen Angaben. Das Kürzel .DET ist das Synonym für
.DETAIL.
Eine der meistverwendeten Report-Writer-Anweisungen ist die
.PRINT-Anweisung. Diese Anweisung veranlaßt die Ausgabe von
Zeichenketten, Tabellenspalten oder Ausdrücken aller Art in
eine Liste. Der Programmierer kann die Ausgabe mit Hilfe
zahlreicher unterschiedlicher Formate steuern, von denen wir
die in Beispiel 5.1 verwendeten
c(20),
n(6) und
d("February 3 1901")
erläutern werden. Das Format c(n) gibt eine Zeichenkette
aus, wobei n die maximale Anzahl der auszugebenden Zeichen
definiert. Das zweite Format n(b) wird für die Ausgabe
numerischer Werte benutzt, während d("February 3 1901") in
Beispiel 5.1 die Ausgabe der Systemfunktion current_date
regelt. Report-Writer verwendet das spezifische Datums- und
Zeitformat
Sunday, February 3 1901 at 4:05:06 p.m.
als Musterformat für Werte vom Typ DATE. Dieses Format
kann auch teilweise benutzt werden, wie in Beispiel 5.1
ersichtlich ist.
Die letzte Gruppe von Anweisungen, die wir beschreiben
werden, sind die Anweisungen zur Textpositionierung. Zu
diesen Anweisungen gehören u.a.:
- .TAB,
- .NEWLINE,
- .LEFT und
- .CENTER .
Mit der .TAB-Anweisung wird die Position in der aktuellen
Zeile geändert, so daß der Text ab der definierten Stelle
ausgegeben wird. Die Änderung der aktuellen Position kann
sowohl absolut (z.B. .TAB 32) als auch relativ (z.B. .TAB
+12) sein. Das Kürzel .T ist das Synonym für .TAB.
Die Anweisung .NEWLINE n verschiebt die Textausgabe um n
Zeilen. Falls die optionale Angabe n ausgelassen wird, wird
standardmäßig der Wert 1 angenommen, was die Verschiebung an
den Anfang der nächsten Zeile bedeutet. Das Kürzel .NL ist
das Synonym für .NEWLINE.
Die Anweisung .LEFT n positioniert einen Textblock relativ
um n Stelen nach links. Falls n ausgelassen wird, wird der
Textblock linksbündig ausgegeben. (Report-Writer unterstützt
auch die analoge Anweisung .RIGHT.) Die Anweisung .CENTER
zentriert einen Textblock.
Report-Writer ermöglicht auch die Verwendung von
Kontrollstrukturen mittels der IF-Anweisung. Diese Anweisung
hat hier dieselbe Syntax und Funktionalität wie in den
meisten anderen Programmiersprachen.
Die Listenausgabe des Beispiels 5.1 sieht folgendermaßen
aus:
Datum:August
14 1991
Einstellungen im Jahre 1988
|
Projektnummer |
Mitarbeiternummer |
Mitarbeitername
|
Eingestellt am: |
|
p1 |
285591 |
Mozer |
88-08-01 |
|
p1 |
10102 |
Huber |
88-10-01 |
|
||||
Das juengste Einstellungsdatum ist: 88-08-01 |
||||
|
p2 |
285592 |
Mozer |
88-02-01 |
|
p2 |
25348 |
Keller |
88-02-15 |
|
||||
Das juengste Einstellungsdatum ist: 88-08-01 |
||||
|
p3 |
090313 |
Meier |
88-11-15 |
|
||||
Das juengste Einstellungsdatum ist: 88-08-01 |
||||
Listenende
INGRES/GRAPHS ist eine weitere Komponente von INGRES, die
die Erstellung von Berichten ermöglicht. Im Unterschied
zu INGRES/REPORTS bzw. Report-Writer, die beide Berichte
in einer Listenform erstellen, erzeugt INGRES/GRAPHS die
Ausgabe in grafischer Form.
Um die von INGRES/GRAPHS erstellten Grafiken auszugeben,
benötigt der Benutzer einen entsprechenden grafischen
Bildschirm. (Ein alphanumerischer Bildschirm kann u.U.
auch für die Ausgabe von den mit INGRES/GRAPHS erstellten
Grafiken benutzt werden; in diesem Fall aber werden die
Linien durch Buchstaben ersetzt, was eine zusätzliche
Vorstellungskraft des Benutzers erfordert, um die Grafik
erfassen zu können.)
INGRES/GRAPHS enthält eine einzige Komponente - VIGRAPH
("Visual Graphic Editor") - die aufgerufen wird, nachdem
die Funktion Graphs im INGRES/MENU ausgewählt, bzw. das
Betriebssystemkommando vigraph ausgeführt wird. Nach dem
Aufruf der Funktion Graphs erscheint das VIGRAPH-frame (Abb.
5-7):
Abb. 5-7 VIGRAPH-frame
Das in Abbildung 5-7 dargestellte frame enthält vier
existierende Grafikspezifikationen: bar1.gr, line1.gr,
pie1.gr und scatt1.gr, die als Demonstrationsbeispiele
gemeinsam mit dem System ausgeliefert werden. Die
Spezifikation bar1.gr ist in der Form eines Balkendiagramms,
line1.gr in Form einer Liniengrafik, pie1.gr in Form
eines Kuchen- und scatt1.gr in Form eines Punktediagramms
dargestellt.
Graphic Catalog-frame enthält folgende Funktionen:
Funktion |
Bedeutung |
CreateBlank |
unterstützt die Erstellung einer ganz neuen Grafikspezifikation. |
Destroy |
löscht eine existierende Grafikspezifikation. |
Edit |
editiert eine existierende Grafikspezifikation. |
Rename |
benennt eine existierende Grafikspezifikation um. |
MoreInfo |
gibt die zusätzliche Information (Erstellungsdatum, Kommentar usw.) über eine existierende Grafikspezifikation aus. |
Sketch |
zeichnet eine kleine Grafik zu Anschauungszwecken in der rechten unteren Bildschirmecke. |
Profile |
gibt alle VIGRAPH-Parameter am Bildschirm aus. Der Benutzer hat anschließend die Möglichkeit, die Parameter zu ändern. |
MapData |
erlaubt dem Benutzer, Daten für eine Grafikspezifikation zu definieren. |
zeichnet die Grafik für die ausgewählte Spezifikation. |
An einem einfachen Beispiel werden wir die Benutzung von
INGRES/GRAPHS zeigen. Das Beispiel gibt, mit Hilfe eines
Balkendiagramms, die Mittel aller Projekte aus. Durch die
Auswahl der Funktion Edit für die Spezifikation bar1.gr in
der Graph Catalog-Maske und der anschließenden Auswahl der
Funktion MapData erscheint das Data Mapping-frame in Abbildung
5-8.
Abb. 5-8 Data Mapping-frame für die Tabelle projekt
Weil wir die Mittel aller Projekte aus der Tabelle projekt
sehen wollen, muß zuerst die Tabelle projekt angegeben
werden. Im Falle eines Balkendiagramms kennzeichnet die
X-Koordinate den Balkennamen, während die Y-Koordinate die
Balkenhöhe definiert. (Die Z-Koordinate definiert den Namen
der Teilbalken.) In unserem Beispiel ist die Spalte pr_nr
die X-, mittel die Y-Koordinate, während die Z-Koordinate
keine Angabe enthält, weil keine Teilbalken in Grafiken
gebildet werden. Nach dem Speichern der so geänderten
Spezifikation und der Auswahl der Funktion Plot wird das
Balkendiagramm (Abb. 5-9) für die Mittel aller Projekte
ausgegeben.
Abb.
5-9 Balkendiagramm für die Mittel aller Projekte
A.5.1 Erstellen Sie die Liste aller Projekte, in denen
einzelne Mitarbeiter arbeiten, gruppiert nach
Mitarbeiternamen. Am Anfang jeder Gruppe soll der Name
und der Vorname des Mitarbeiters ausgegeben werden,
gefolgt von den einzelnen Daten jedes Projektes
(Projektnummer, Projektname und Aufgabe des Mitarbeiters
in diesem Projekt).
A.5.2 Erstellen Sie die Liste aller Mitarbeiter, gruppiert
nach dem Standort ihrer Abteilung. Die Liste soll
die Personalnummer und den Namen jedes Mitarbeiters
enthalten.
A.5.3 Erstellen Sie die Liste aller Mitarbeiter, gruppiert
nach den Namen der Abteilungen, denen sie angehören.
Die Liste soll Namen, Vornamen und Projektaufgabe jedes
Mitarbeiters enthalten.