VIP Professional Datenanwendung im Programmierkurs Teil 5

Der heutige Teil unseres Programmierkurses beschäftigt sich ausschließlich mit den Datenbankanwendungen innerhalb der VIP Professional-Schale. Fleißige Leser der “ST” werden sicher auch den Kurs meines Schreiber-Kollegen Paul Fischer - Vom Papier zur Datenbank - gelesen haben.

VIP Professional stellt uns nicht die mächtigen Datenbankbefehle eines ST-B ASE. DBM AN oder RB ASE zur Verfügung. doch auch die geringe Auswahl von Datenbank-Menüs aus der Befehlsleiste und des Wortschatzes, kann sich im täglichen Gebrauch als durchaus nützlich erweisen. Wir wollen uns zunächst mit dem Wort Datenbank innerhalb VIP etwas vertraut machen. Die Abbildung 2 zeigt Ihnen eine typische Datenbank mit den wichtigen Datenbankbegriffen: FELDNAME. DATENSATZund FELD. Wir werden diese Begriffe in den weiteren Erklärungen mehrmals anwenden.

Sämtliche Eingaben in einer einzelnen Zeile stellen einen Datensatz dar, eine Sammlung von Informationen über ein bestimmtes Element der Datenbank.

Jeder Datensatz in einer Datenbank besteht aus denselben Kategorien, die als Felder bezeichnet werden. Jede Spalte in der Datenbank umfaßt ein Feld. Jede Zelle in der ersten Zeile einer Datenbank enthält ein LABEL (Label = Textausdruck), das als Feldname bezeichnet wird. Es kennzeichnet die Informationskategorie in der darunterstehenden Spalte. Alle aufeinanderfolgenden Zeilen enthalten Datensätze.

Jede Sammlung von Daten, in unserem Beispiel Programme, die in Datensätzen und Feldern angeordnet ist, kann als VIP-Datenbank benutzt werden.

Beim Erstellen einer VIP-Datenbank müssen folgende Regeln berücksichtigt werden:

Abb. 2: Die typische Datenbank
  1. Regel

Unter dem Feldnamen oder zwischen den Datensätzen dürfen keine Leerzeilen stehen.

  1. Regel

Felder enthalten entweder LABELS oder numerische Daten. Labels und numerische Daten dürfen nicht innerhalb eines einzigen Feldes gemischt werden.

  1. Regel

Eine VIP-Datenbank kann maximal 256 Felder (!!!) umfassen.

Mit den Datenbefehlen aus der Befehlsleiste, die mit einer Datenbank benutzt werden, können Datensätze in alphabetischer oder numerischer Reihenfolge sortiert werden. Außerdem können Datensätze gesucht und aufgelistet werden, die bestimmten angegebenen Auswahlkriterien genügen.

Der Einstieg

Sie haben ja alle schon eine große Erfahrung mit dem VIP-KURS gesammelt und wissen, daß Sie zu unserem Kurs Ihren Atari einschalten und VIP Professional natürlich sofort starten sollten.

Wir bewegen uns nun innerhalb des Befehlsleisten-Punktes DATA und erhalten jetzt folgende Auswahl angeboten:

FILE: /DF
Mit Fill wird eine sequentielle, aufsteigende oder absteigende Reihe von Zahlen in einen angegebenen Zellenbereich eingegeben.

SORT: /DS
Sortieren von Zellen und Zeilen innerhalb einer Datenbank.

QUERY: /DQ
(auch F7) Selektiert Daten einer Datenbank.

DISTRIBUTION: /DD
Mit Distribution wird eine Häufigkeitsverteilung der Werte in einem Bereich ermittelt.

Man reiche mir das Füllhorn

Bitte erzeugen Sie sich ein leeres Arbeitsblatt, positionieren Sie den Cursor auf Zelle Al und geben Sie die 1. und 2. Sequenz aus Abbildung 3 ein.

Abb. 3: Daten füllen

Ihnen als Vip-Künstler möchte ich an dieser Stelle auch noch einen kleinen aber manchmal hilfreichen Trick beibringen. Nehmen wir einmal an, in Zelle BIO hätten wir eine Formel, die uns die Summe des Bereiches C3..E6 wiedergibt. Diesen Wert wollen wir protokollieren, also festhalten und bei einer Veränderung der Werte im Summenbereich nicht korrigieren.

Bei der Befehlseingabe nach Sequenz 3 übergeben wir der Zelle Bl 1 also nur den Wert aus BIO und kopieren nicht den Zelleninhalt mit der Formel @SUM (C3.E6). Kritiker und aufmerksame Leser werden sich sagen, warum schreibt man nicht einfach in Zelle B11 die Formel +B10! Ganz einfach, denn würden wir diese Formel verwenden, einen Wert im Summenbereich ändern und neu berechnen, würde sich auch der Wert in der Zelle Bll verändern. Bei der Befehlseingabe nach Sequenz 4 übergeben wir das Systemdatum in Zelle B12, diese Anwendung ist zum Beispiel bei Meßwerterfassungen oder bei der Protokollierung von Datensicherungen sehr hilfreich.

Fassen wir das “Füllhorn” zusammen

Mit /DF (Data,Fill) wird eine sequentielle, aufsteigende oder absteigende Reihe von Zahlen in einen angegebenen Zellenbereich eingegeben. Man kann diese Funktion nicht nur innerhalb einer Datenbankanwendung einsetzen, sondern auch der Tabellenkalkulationsteil kann davon profitieren.

Bei dem Startwert handelt es sich um die erste Zahl in der Folge.

Der Stepwert ist der Zuwachs zwischen den einzelnen Zahlen in der Folge. Beim Endwert handelt es sich um die letzte Zahl der Folge. Ein Endwert muß nicht unbedingt angegeben werden, es sei denn, die Folge soll bei einem bestimmten Wert enden, der unter Umständen erreicht wird, bevor der ganze Bereich gefüllt ist. Die Vorgabewerte für START (0), STEP (1) und END (8191) können durch Betätigen von Return im Anschluß an die entsprechende Eingabeaufforderung übernommen werden. Es lassen sich jedoch auch eigene Werte eingeben.

Wenn wir uns nochmal die Abbildung 2 ansehen, könnten wir doch schon mal mit dem “Füllhorn” im Bereich A2. A12 spielen und unseren Programmen eine laufende Nummer geben. Das hat den großen Vorteil der Rekonstruktion der ursprünglichen Datenfolge nach einem Sortieren. Jetzt sind wir schon beim nächsten Schlagwort.

Sortieren und Probieren

Unsere Abbildung 2 mit den Programmnamen, Bezeichnungen, Kaufdaten und Preisen soll nun nach unterschiedlichen Kriterien sortiert werden. Ich habe die Daten willkürlich gewählt, sie stellen keine Rangfolge in der Gunst meiner Schreiberaktivitäten dar.

Füllen Sie zunächst den Bereich A2.A12 mit den Ziffern 1 bis 11 und benennen Sie den Bereich A2..E12 mit unserer alten Taufsequenz /RNCA2.E12~DATEN~ mit dem Namen “DATEN”. Die Feldnamen: Lfd.#, Programm, Art, Kaufdatum und Preis können wir ebenfalls wieder taufen.

Cursor auf A1: /RNC~-NUMMER~
Cursor auf B1: /RNC~PROGRAMM~
Cursor auf C1: /RNC~ART~
Cursor auf D1: /RNC~DATUM~
Cursor auf El: /RNC~PREIS~

Ich habe die Benennung der Feldnamen nur gewählt, um den Macroaufbau für ein Sortieren dieser kleinen Datenbank etwas transparenter zu gestalten.

Jetzt machen wir uns wieder an das elegante Macro-Programmieren und bauen unser Template gemäß der Abbildung 4 weiter aus.

Wenn alles prima geklappt hat, benennen wir unsere Tastatur-Macros wie gehabt mit der alten Taufsequenz.

Sie wissen hoffentlich noch, was ich damit meine? Naja, also nochmal! Wenn man einen Macro direkt über die Tastatur aufrufen möchte, muß er zuerst kreiert und benannt werden. In Abbildung 4 sind dies die Zellen AC3 mit dem Namen \L, die Zelle AC8 mit dem Namen NP und die Zelle AC13 mit dem Namen \D. Der Cursor muß jeweils auf die vorgenannten Zellen positioniert werden, und mit nachfolgenden Sequenzen geben wir unseren “Täuflingen” einen Namen:

/RNC~\L~ (für AC3=\L);
/RNCWP~ (für AC8=\P) und
/RNC~\D~ (für AC13=\D).

Sie können mit der Home-Taste wieder auf die Position Al zurückspringen und unserer “Sortier- und Probier-Aktion” mit verzückten Augen Zusehen, bei der nach dem Tastenanschlag ALT+P unsere kleine Datenbank recht schnell nach Programmnamen sortiert wird. Die anderen Tastenanschläge sollten Sie jetzt ja auch selbst durchführen können. Nur Mut, Sie haben ja das Arbeitsblatt zuvor schon gesichert?!

Mit /DS werden die Datensätze in unserem Template in der angegebenen Folge neu geordnet. Sie haben beim Durchlaufen des Menüs festgestellt, daß es möglich ist, zwei Sortierschlüssel anzugeben. Bei dem 1. Sortierschlüssel handelt es sich um das Feld, mit dem V1P die neue Reihenfolge für die Datensätze festlegt. Die Datensätze sind so angeordnet, daß die Werte in dem Feld mit dem ersten Sortierschlüssel in aufsteigender (ascending) oder absteigender (descending) Reihenfolge angezeigt werden. Der 2. Sortierschlüssel ist das Feld, mit dem VIP eine weitere Unterscheidung vornimmt, wenn zwei oder mehr Datensätze in dem Feld mit dem ersten Sortierschlüssel über dieselben Eingaben verfügen. Bitte beachten Sie unbedingt, daß der als letztes angegebene Datenbereich, der erste und zweite Sortierschlüssel sowie die Sortierreihenfolge für spätere Sortiervorgänge mit dem Arbeitsblatt gespeichert werden. Diese Vorgaben werden nach jedem IFR (Befehlsleiste, File, Retrieve) wieder als Standardwert angezeigt. Ich erwähne dies nur, weil man durch eine Unachtsamkeit recht schnell in David Bowie’s Labyrinth gerät und sich die Datenbank nur durch mühseliges MOVE und COPY regenerieren läßt.

Formeln im Labyrinth

Ihre unberechtigte Angst vor dem Sortieren von Zellen, die Formeln beinhalten, können Sie getrost beiseite legen, wenn Sie sich an folgende Regeln halten: Werden Bereiche mit Formeln sortiert, müssen sämtliche Referenzen auf Zellen außerhalb des Datenbereichs absolute Referenzen sein (z.B.:+$A$5).

Referenzen auf Zellen innerhalb derselben Zeile in einem Sortierbereich müssen relativ sein, zumindest in Bezug auf die Spalten. Referenzen auf Zellen in anderen Zeilen des Datenbereichs müssen vermieden werden!!

Nur ein Viertelstündchen....

Gemäß den alten Vorsätzen gehen wir nach solchen Hirnschmalz-Aktivitäten zu unserem wohlbekannten Pflichtteil über und erlernen nun auch noch die Datenbank- und statistischen Befehle von Vip Professional. Um es unseren kleinen grauen Zellen etwas leichter zu machen, nehmen Sie meine Abbildung 5 als visuelle Gedankenstütze (manchmal fällt Theorie eben schwer).

@DCOUNT

Schreibweise: @DCOUNT (Datenbankbereich, Spaltennummer, Kriterienbereich)

Die Funktion zählt die gefüllten Zellen in der Spaltennummer des Datenbankbereichs, die den Kriterien in dem Kriterienbereich gerecht werden.

Beispiel:

Die Zellen C14.C15 in Abbildung 5 tragen mit dem Feldnamen ART das Kriterium Calc. Unsere Formel soll nun die Anzahl der Datensätze ermitteln, die eben dem Kriterium Calc entsprechen und sie als ganzzahligen Ausdruck in Zelle C16 wiedergeben.

Schreibe nun in die Zelle: @DCOUNT-(A1.E12,1,C14.C15) im Klartext heißt das nichts anderes als Zähle(Datenbank-bereich, Spalte 1. Kriterium! ART=Calc))

@DSUM

Schreibweise: @DSUM (Datenbankbereich, Spaltennummer, Kriterienbereich)

Bei dieser Funktion werden alle mit dem Kriterium übereinstimmenden Datensätze mit den Werten in der gewählten Spaltennummer addiert. Ein Beispiel finden wir in Abbildung 5.

@DAVG

Schreibweise: @DAVG (Datenbankbereich, Spaltennummer, Kriterienbereich)

Hier wird der Mittelwert der Werte in der Spaltennummer des Datenbankbereichs, die den Kriterien in dem Kriterienbereich gerecht werden, ermittelt.

@DVAR

Schreibweise: @DVAR (Datenbankbereich, Spaltennummer, Kriterienbereich)

Auch die Varianzberechnung ist hier im Datenbankteil verfügbar.

Abb. 4: Sortiermacros

@ DSTD

Schreibweise: @DVAR (Datenbankbereich, Spaltennummer, Kriterienbereich)

Standardabweichung.

@DMAX

Schreibweise: @DMAX (Datenbankbereich. Spaltennummer, Kriterienbereich)

Ermittelt den Maximalwert (Beispiel : Abbildung 5).

@DMIN

Schreibweise: @DMIN (Datenbankbereich, Spaltennummer, Kriterienbereich)

Ermittelt den Minimalwert.

Abb. 5: Datenbankfunktionen

Wer suchet, der findet

Mit der Datenbankabfrage /DQ kommen wir in den interessantesten Teil der Datenbankanwendung von Vip Professional überhaupt. Meine treuen PD-Diskbesit-zer (131) werden recht schnell erkannt haben, daß sich damit sehr große und komplexe Datenbankabfragen wie bei einer Mitgliederverwaltung realisieren lassen. Als Beispiel erweitern wir unser Arbeitsblatt gemäß den Abbildungen 6 und 7.

Die Abbildung 6 zeigt wiederum den INPUT-Bereich (Eingabe), der einschließlich der Spaltenüberschriften definiert werden muß. Mit der Befehlssequenz: /DQIA6..I19~ übergeben wir der Datenbank diese Information.

Unsere Datenbankabfragen werden durch die sogenannten “Filter” des CRITERION-Bereiches (Kriterien) an den OUTPUT-Bereich (Ausgabe) weitergereicht, ohne dabei den urprünglichen Datenbestand zu verändern.

Bitte beachten Sie beim Einrichten des CRITERION-Bereiches A27..I28, unbedingt darauf, daß die Feldnamen des Bereiches INPUT mit denen der Bereiche CRITERION und OUTPUT genau übereinstimmen. Am besten verwenden Sie dazu die COPY-Funktion unseres VIP-Professionals.

Für das Erstellen eines CRITERION-Bereiches gelten folgende Richtlinien:

  1. Mit den Eingaben in den CRITERION-Bereich wird Vip angegeben, nach welchen Datensätzen in der Datenbank gesucht werden muß. Es können Kriterien aufgenommen werden, die sich auf ein oder mehrere Felder in der Datenbank beziehen.

  2. In der ersten Zeile des CRITERION-Bereiches werden einer, einige oder alle Feldnamen in der Datenbank kopiert. Es brauchen nur die Namen der Felder kopiert zu werden, die mit dem Kriterium geprüft werden. Werden jedoch sämtliche Feldnamen kopiert, können die Kriterien (mit beliebigen Feldern) jederzeit geändert werden.

  3. Das Auswahlkriterium wird ab der zweiten Zeile des CRITERION-Bereiches eingegeben. Jedes Auswahlkriterium wird unter der Kopie des entsprechenden Feldnamens eingegeben. Ein, Label oder Wert kann genauso eingegeben werden, wie er in der Datenbank steht, wenn VIP nach Datensätzen suchen soll, die dem Kriterium genau gerecht werden. Es können auch Formeln eingegeben werden.

  4. Ihre Datenbank darf nie zwei oder mehrere gleiche Feldnamen besitzen. Eine korrekte Abfrage wäre dann nicht möglich.

Unsere Bereiche CRITERION und OUTPUT müssen mit den nachfolgenden Sequenzen wieder benannt werden und stehen dann für eine Abfrage zur Verfügung.

Der CRITERION-Bereich: /DQC-A27..-128~ und der OUTPUT-Bereich: /DQO-A37.I100~.

Als aufmerksamer Leser ist Ihnen sofort aufgefallen, daß wir den OUTPUT-Bereich wesentlich größer gewählt haben als notwendig. Grundsätzlich muß in der Datenbankabfrage immer darauf geachtet werden, den OUTPUT-Bereich größer als den INPUT-Bereich zu wählen.

Abb. 6: Datenbankbereich INPUT

Jetzt geht’s los...........

Für unsere erste Datenbankabfrage haben wir im Feld: PROGRAMM das Kriterium Vip* eingegeben. Um eine Abfrage durch den Filter auszulösen, muß der Datenbank-Funktion von VIP zunächst einmal die Abfrage mit nachfolgender Sequenz vordefiniert werden: IDQE (Befehlsleiste, Data, Query, Extract).

Nach dieser Sequenz können Sie durch Änderung der Filter-Kriterien direkt mit der F7-Taste eine neue Abfrage starten.

Suchen nach Labels

Um eine genaue Übereinstimmung zu erhalten, muß ein Kriterium in Form eines Labels genauso eingegeben werden, wie es in der Datenbank steht. Mit zwei Sonderzeichen kann nach Labels gesucht werden, die Kriterien in Form von Labels nicht genau gerecht werden:

Mit ? wird Übereinstimmung für ein einzelnes Zeichen gefunden. So erhält man bei V?P Übereinstimmung für VAP, VPP und VOP. jedoch nicht für VIT oder VIL.

Mit * wird Übereinstimmung für alle Zeichen bis zum Ende eines Labels gefunden. Auf diese Weise wird VIP*, VIP-TEXT und VIP-GEM gerecht.

~ wird jedem Label mit Ausnahme des der Tilde folgenden Labels gerecht (leere Zellen werden jedoch niemals von einem Kriterium in Form von Labels ausgewählt). So wird beispielsweise ~V sämtlichen Datensätzen gerecht, bei denen in diesem Feld eine Eingabe steht, die nicht mit V beginnt.

Suche nach Werten

Kriterien können aus Werteingaben bestehen, für die eine genaue Übereinstimmung oder Übereinstimmung mit einer bestimmten Bedingung gewünscht wird. Wird eine genaue Übereinstimmung gewünscht, gibt man nur den Wert in den Kriterienbereich ein. Mit einer bedingten Übereinstimmung muß die Bedingung als logischer Ausdruck eingegeben werden, mit dem das entsprechende Feld des ersten Datensatzes in der Datenbank getestet wird. Mit einem logischen Operator (<,<=,>,>=,<>) in der Formel vergleicht man diese Zelleingabe mit einem beliebig anderen Wert. In der Abbildung 7 würden wir das Kriterium VIP* unter dem Feldnamen Programm löschen (/RE~) und unter dem Feldnamen “Wert DM” die Formel +I7>500 eintragen. Positionieren Sie den Cursor auf Zelle 128, und formatieren Sie diesen Inhalt als Textzelle.

(/RFT~). Die Datenabfrage über Funktionstaste F7 würde nun alle Programme suchen, die über DM 500,- kosten.

Mehrfachkriterien

Werden mehrere Kriterien in verschiedenen Feldern derselben Zeile eingegeben, wird nach Datensätzen gesucht, die allen Kriterien gleichzeitig gerecht werden. Vip Professional behandelt die Kriterien in derselben Zeile so, als wären sie durch das Wort UND miteinander verbunden.

Werden mehrere Kriterien in verschiedenen Feldern in verschiedenen Zeilen eingegeben, suchen die Datenbankbefehle nach Datensätzen, die einem der Kriterien gerecht werden. Vip behandelt Kriterien in separaten Zeilen so, als wären Sie durch das Wort ODER miteinander verbunden.

Sollen zusammengesetzte Kriterien erstellt werden, die mehr als nur einer Bedingung in demselben Feld gerecht werden. müssen zusammengesetzte logische Formeln benutzt werden. Die beiden Bedingungen werden durch #AND#, #NOT#oder#OR#in der Formel miteinander verbunden. So sucht beispielsweise +I7>500#AND#+I7<600 nach sämtlichen Datensätzen mit Werten, die größer als DM 500,- und kleiner als DM 600,-sind.

Mehrfachabfrage

Bei Datenbankabfragen will man häufig mehrere Filterkriterien in einen Ausgabebereich kopieren. Unser Vip bietet über den UNIQUE-Befehl (/DQU) die Möglichkeit, aus nacheinander eingegebenen Abfragekriterien einen Ausgabebereich zu erstellen, der keine Doppelgänger beinhaltet.

Eine weitere sehr interessante wie auch gefährliche Abfragefunktion ist das Löschen von Datensätzen im INPUT-Bereich.

Mit der Befehlsfolge IDQD (Befehlsleiste, Data, Delete) werden die Datensätze im INPUT-Bereich gelöscht, die mit den Kriterien im CRITERION-Bereich übereinstimmen. Außerdem werden die Zeilen aus der Datenbank gelöscht, in der die Datensätze standen.

Abb. 7: CRH URION- und OUTPUT-Bereiche

30 Grad im Schatten

Ein etwa 45 Grad warmer MEGA 4 und ein eisgekühlter Grapefruitsaft leisten mir beim Schreiben des Programmierkurses und dem Durchsehen der VIP-Leserpost etwas Gesellschaft. Ich habe nur Sorge, ob meine Festplatte die Tortur des gigantischen Ansaugstromes der SH204-Lüftereinheit übersteht. Mein Sohn Markus versucht, die Briefmarken von den Umschlägen zu lösen und in die Lüftungsschlitze einzuwerfen. Sehnsüchtig wartet er auf das “DANKE" des Papierdrachens, den er vor Wochen im Märchengarten gesehen und gehört hat. Doch meine SH204 bleibt stumm.

Ich möchte das Datenbank-Thema an dieser Stelle abbrechen und nochmals auf meine Ausführung zur Literatur in der vorletzten Ausgabe der ST hinweisen. Anwender, die mehr mit den Datenbankfunktionen von VIP machen wollen, sollten sich unbedingt Fachbücher zu diesem Thema besorgen.

Bis bald, HDS



Aus: ST-Computer 10 / 1988, Seite 133

Links

Copyright-Bestimmungen: siehe Über diese Seite