Tips und Tricks zu Superbase 64 (Teil 2)
Zum zweitenmal neue Tips und Tricks zu Superbase 64! Diesmal haben wir zusätzlich ein Programm dabei, das beim Ausdrucken von Adressen auf Briefköpfe oder Adreßaufkleber nützlich ist.
Die Kommandos ENTER, SELECT, OUTPUT und PROG braucht man eigentlich immer, wenn man mit Superbase arbeitet. Datenein-/ausgabe, Ausdruck von Daten und schließlich das Programmieren der Datenbank sind die zentralen Aufgaben eines Datenbanksystems. Daher haben wir einiges an Wissenswertem dazu zusammengetragen.
ENTER = Dateneingabe
Im ENTER-Modus wird ein Datensatz in das leere Datensatz-Layout eingegeben. Interessant ist, daß in einem Zahlenfeld schon bei der Eingabe einfache Berechnungen ausgeführt werden können: Addition, Subtraktion, Multiplikation und Division (+; -; * und /). Notfalls kann man mit DEL die Zahl nach links verschieben, um dahinter das Divisionszeichen und den Dividenden einzufügen. Kommt es hier zu einer falschen Eingabe, erscheint auf dem Bildschirm eine überraschende Fehlermeldung: »? syntax error ready«. Mit LIST und RETURN erscheint dann eine zweite Fehlermeldung: »druecken Sie RETURN um fortzufahren«; »ungueltige Befehl«. (Dieser und die folgenden Rechtschreibfehler entstanden wohl bei der Übersetzung des Programms aus dem Englischen.) Durch RETURN gelangt man nun endlich in das 1. Menü, aus dem der ENTER-Modus erneut angewählt werden muß.
Weitere vier Fehlermeldungen treten gelegentlich auf: »Erzwungenes Feld Bitte Daten eingeben«. Hier wurde vergessen, ein erzwungenes Feld oder ein Schlüsselfeld auszufüllen. »Schluessel exist bereits«: Ergänzen Sie das Schlüsselwort am Ende des Feldes durch eine Zahl. Eine Datei mit doppelten Schlüsseln empfiehlt sich nicht, da bei der Angabe über eine Liste immer der zuletzt eingegebene Datensatz des Schlüssels ausgegeben wird. Alle früher eingegebenen Datensätze mit gleichlautenden Schlüsseln sind nur umständlich zu erreichen. Übrigens, wenn Sie sich entschließen sollten, eine Datei nachträglich auf eindeutige Schlüssel zu ändern, wenden Sie das entsprechende Programm aus »Superbase, Tips & Tricks« von Data Becker an. Es funktioniert einwandfrei.
»ungueltiges Datum«: Der Monat des Datums muß mit drei Buchstaben eingegeben werden. Sie können große und/oder kleine Buchstaben verwenden. Achtung: Monat März muß mit »mar«, Mai jedoch als »mai« und nicht als »may« eingegeben werden. Superbase akzeptiert keine Punkte zur Trennung von Tag, Monat und Jahr. Auch dürfen Sie die Jahreszahl nur zweistellig angeben. Nach dem 31.12.1999 wird es dann wohl Probleme in der automatischen Wochentagsberechnung geben.
»+####.###«: Das Format des Zahlenfeldes wurde mißachtet.
SELECT = Datenauswahl
Im SELECT-Modus besteht die Möglichkeit, einen ganz bestimmten Datensatz auszuwählen. Dazu gibt es verschiedene Möglichkeiten. Am schnellsten läuft die Auswahl über den Schlüssel ab. Das liegt daran, daß die einzelnen Schlüssel der Datensätze alphabetisch sortiert sind und daß die Schlüsselliste sich nach dem Anwählen einer Datei im Arbeitsspeicher des C 64 befindet. Selbst in einer umfangreichen Datenbank kann innerhalb kürzester Zeit ein einzelner Datensatz direkt von der Diskette gelesen werden. Es müssen also nicht alle Einträge, die sich vor dem gesuchten Datensatz auf der Diskette befinden, gelesen werden, wie dies bei einer sequentiellen Datei der Fall wäre.
Die folgenden Befehle benötigen nicht mehr Zeit zur Ausführung als KEY. Es sind FIRST, LAST, CURRENT, PREVIOUS und NEXT Mit FIRST (LAST) wird der erste (der letzte) Datensatz einer Datei aufgerufen. Mit CURRENT erhält man den soeben bearbeiteten Datensatz. Dabei merkt sich das System in den drei zuletzt aufgerufenen Dateien diesen Datensatz, was für einige Anwendungen, in denen mehrere Dateien verknüpft werden müssen, sehr nützlich ist. PREVIOUS und NEXT beziehen sich auf den gegenwärtigen Satz. Es wird der alphabetisch vorhergehende oder folgende aufgerufen.
Wenn Sie dagegen den Befehl MATCH verwenden, steht Ihnen zwar eine flexiblere, dafür aber eine um vieles langsamere Suchmethode zur Verfügung. Es wird nämlich die Datei Satz für Satz auf Ihre angegebenen Vergleichskriterien durchgesehen. Dabei beginnt die Auswahl immer mit dem gegenwärtigen Datensatz. Sie sollten also vorher den Befehl FIRST eingeben.
Natürlich kann man sich den aktuellen Datensatz auch ausgeben lassen. Dazu gibt es meiner Meinung nach nur vier Möglichkeiten. Normalerweise wird auf den Tastendruck »o« der Inhalt der Felder quer über den Bildschirm ausgegeben. Man kann aber im ersten Menü über die Tastatur den
Datenbankbefehl »down« eingeben. Hierbei wird die Befehlszeile benutzt. Die Ausgabe erfolgt dann zweispaltig untereinander. Links werden die Feldnamen und rechts die Feldinhalte angezeigt. Selbstverständlich kann man die Ausgabe auch an den Drucker schicken. Dazu muß lediglich in der Befehlszeile »print« eingegeben werden. Es werden nun alle Ausgaben an den Drucker geschickt, bis Sie in der Befehlszeile »display« eingeben. Natürlich müssen die Befehle mit RETURN bestätigt werden. Mit »across« erfolgt die Ausgabe übrigens wieder quer über den Bildschirm oder die Druckseite.
Mit »a« (add) legen Sie einen neuen Datensatz auf der Grundlage eines bestehenden an. Es muß also mindestens der Schlüssel geändert werden. Dagegen wird mit »r« (replace) ein aktueller Datensatz geändert. Dazu muß natürlich der Schlüssel erhalten bleiben. Schließlich können Sie mit »d« (delete) den aufgerufenen Datensatz löschen.
In der Kopfzeile erscheinen, wenn ein Datensatz ausgewählt wurde, im Gegensatz zum SELECT-Menü noch zwei weitere abgekürzte Befehle. Mit»+«und mit»-«können Sie zwischen den vier Bildschirmen des Datensatzlayouts hin und herschalten. Dies funktioniert natürlich nur, wenn verschiedene Bildschirme auch tatsächlich bestehen.
OUTPUT = Datenausgabe
Die Daten einer Datei sind nur nutzbar, wenn sie auch ausgegeben werden können. Im OUTPUT-Modus des ersten Menüs stehen dazu eine Reihe von Befehlen zur Verfügung. Nach dem Starten von Superbase erfolgt jede Ausgabe quer über den Bildschirm (display across). Es handelt sich dabei um die Default-Befehle. Wie ich unter SELECT bereits geschrieben habe, kann die Ausgabe auch untereinander auf dem Drucker erfolgen (print down). Bis zu einer Änderung der Befehle erfolgt nun jede Ausgabe in dieser Weise.
Die vier genannten Befehle lassen sich auch verkürzen: dI, aC, <-, prI und dO (geschrieben werden sie dann: d SHIFT-I, a SHIFT-C, pr SHIFT-I und d SHIFT-O). Beim Rückruf der Befehlszeile mit der Pfeil-links-Taste werden sie dann ausgeschrieben angezeigt. Haben Sie die Befehlszeile nach Betätigen der F4-Taste geschrieben, müssen Sie am Anfang der Zeile »uO« (u SHIFT-O) für eine erneute Ausführung eingeben.
Mit den obigen Befehlen sind wir bereits in die Superbase eigene Datenbanksprache eingestiegen. Sie umfaßt neben einem Teil der üblichen Basic-Befehlen vierzig weitere Befehle. In dieser Datenbanksprache werden Primär- (I) und Sekundär-Befehle (II) unterschieden. Bitte beachten Sie, daß einem Sekundärbefehl immer ein Primärbefehl vorangestellt sein muß. Da es sich bei DISPLAY, PRINT, ACROSS und DOWN sowohl um Primär- als auch um Sekundärbefehle handeln kann, können Sie diese Befehle in beliebiger Reihenfolge in die Befehlszeile schreiben.
Im SELECT-Modus wird immer nur ein einzelner Datensatz ausgegeben. Hier werden dagegen alle (all) Datensätze oder solche, deren Schlüsselworte in einer Liste aufgeführt sind, ausgegeben (from »Listenname«). Solch eine Liste wird im FIND-Modus erstellt. Sie erhält dann automatisch den Namen »hlist«. Wird die Liste über die Befehlszeile oder ein Programm erstellt, kann ihr auch ein bestimmter Name zugeordnet werden. Dann ist es auch möglich, mehrere Listen mit verschiedenen Namen auf der Diskette präsent zu halten. Die Liste »hlist« wird im FIND-Modus regelmäßig durch eine neue ersetzt. Es ist also nur ratsam, vorläufige Listen ohne Namen zu erstellen.
Die Ausgabe muß nicht den kompletten Datensatz umfassen. Sie können auch Inhalte einzelner Felder ausgeben. Es sind dann die entsprechenden Feldnamen jeweils in eckigen Klammern hintereinander einzugeben. Wenn Sie sich nicht ganz sicher sind, wie die Feldnamen lauten, erstellen Sie sich am besten eine Liste auf dem Drucker durch folgende Eingabe in die Befehlszeile: mA prI status: dI
Natürlich kann auch zusätzlicher Text ausgegeben werden. Dieser muß dann wie üblich zwischen zwei Strichpunkten stehen.
Ein Ausdruck, der auf diese Weise erstellt wird, weist leider häufig große Lücken auf. Es scheint nicht möglich zu sein, einen fließenden Text auszugeben. Das liegt ganz einfach daran, daß der Feldinhalt kleiner als die maximale Feldlänge ist. Hier schafft der Verkürzungsbefehl »&« Abhilfe. Er wird vor die eckige Klammer mit dem Feldnamen geschrieben. Bei einer Datei mit eindeutigen Schlüsseln hatte ich für die Bearbeitung der Fehlermeldung »Schluessel exist bereits« empfohlen, das neue Schlüsselwort am Ende des Feldes durch eine Zahl zu ergänzen. Diese Zahl stört jedoch eine sonst saubere Ausgabe. Mit dem Befehl »&17« wird der Feldinhalt bis zu einer Länge von 17 ausgegeben. An 18. Stelle würde die Zahl stehen, die in der Datei zwei Personen gleichen Namens ermöglicht.
Zahlenfelder können Sie ebenfalls verkürzen (&2,2). Wenn Sie jedoch versuchen, eine Zahl vor dem Komma abzuschneiden, erhalten Sie die Fehlermeldung »+ # #, # #« im laufenden Ausdruck. Nachkommastellen können dagegen ohne weiteres gekürzt werden. Superbase rundet dann automatisch. Selbstverständlich ist es mit Superbase auch möglich, die Ausgabe auf dem Bildschirm oder dem Drucker zu positionieren.
Dazu steht der Befehl »@« zur Verfügung. Mit »@x« wird die Spalte angesprochen. Übrigens erhalten Sie den Ausdruck in der ersten Spalte mit »1« und nicht, wie vielleicht jemand erwartet, mit »0«. Es kann auch eine bestimmte Zeile angesprochen werden. Dazu muß dem Positionierungsbefehl allerdings auch noch die Ziffer für die Spalte folgen (@x,y). Mit der Verwendung des letzten Befehls sollte man allerdings vorsichtig sein. Erfolgt die Ausgabe mehrerer Datensätze auf dem Drucker, wird natürlich ein Seitenvorschub ausgeführt, denn Sie haben ja die Ausgabe in zum Beispiel der zweiten Zeile und nicht zwei Zeilen tiefer verlangt. Zwei spezielle Anwendungen des Positionierungsbefehls will ich nicht unterschlagen. Mit @1,0 erhält man eine Leerzeile und @0 entspricht HOME.
Selbstverständlich besteht auch bei Superbase die Möglichkeit der Zusammenarbeit mit anderen Programmen. Dazu geben Sie die Datensätze an eine sequentielle Datei aus (to »Dateiname«). Diese Datei kann dann von anderen Programmen übernommen und weiter verarbeitet werden.
PROG = das Programm im Programm
Superbase bietet, wie bereits angesprochen, eine eigene Datenbanksprache. Der fortgeschrittene Anwender wird es sicherlich vorziehen, eigene Programme anstelle der doch manchmal umständlichen Menüs zu benutzen. Immer wiederkehrende Abläufe können mit einem kurzen Programm wesentlich vereinfacht werden.
Aufgrund einer Leserfrage habe ich ein kleines Programm (Listing 1) zum Ausdruck von Adressen geschrieben. Bis Zeile 190 werden Systemparameter gesetzt. Die Zeilen 200 bis 280 dienen dazu, die Feldnamen zu überprüfen. Wenn sie nicht übereinstimmen, müssen Sie zunächst das Programm ändern. Dies ist aber ohne Schwierigkeiten möglich. Sie verlassen den PROG-Modus mit Fl und RUN/STOP. Bitte vergessen Sie das Abspeichern vor dem Starten nicht! Zeile 290 bis 390 bringt die Adressen nacheinander auf den Bildschirm. Ein Ausdruck ist möglich (Zeile 1000 bis 1040).
Mit diesem kleinen Beispielprogramm bringe ich Superbase dazu, Adressen zum Teil »across« (Vorname, Nachname), zum Teil »down« (Straße, Ort) auszudrucken.
Das Programm läuft nur, wenn zuvor eine Datenbank und eine Datei eröffnet wurde. Man kann es durch die entsprechenden Befehle aber noch ergänzen. Das vorliegende Programm soll auch nur eine Anregung sein.
100 brkon:rem stop-taste ein 110 lmarg 1:rem linken rand setzen 120 rmarg 80:rem rechten rand setzen 130 plen 72:rem seitenlaenge setzen 140 tlen 65:rem zeilenanzahl setzen 150 pdef 0:rem druckertyp 160 pdev 4:rem drucker device nummer 170 lfeed 0:rem kein zeilenvorschub 180 cont 0:rem kein fortlaufender druck 190 space 0:rem keine leerzeilen 200 display "Ueberpruefen Sie im Listing, ob die " 210 display "Feldnamen des Programms mit Ihren" 220 display "Feldnamen uebereinstimmen. (Taste)" 230 wait 240 list 300- 250 display "In Ordnung? (j/n)" 260 wait a$ 270 if a$="n"then prog 280 if a$<>"j"then goto 260 290 select first 300 display across @5,5&[vornam]&[nachname] 310 display @5,6[strasse] 320 display across @4,8&4,0[plz]&[ort] 330 display @5,10"Soll ein Ausdruck erfolgen? (j/n)" 340 wait a$ 350 if a$="j"then gosub 1000 360 if a$<>"n"then goto 340 370 select next 380 eof menu 390 goto 300 1000 print across @5&[vornam]&[nachname] 1010 print @5[strasse] 1020 print @1,0 1030 print across @4&4,0[plz]&[ort] 1040 return