Liesmich ======== In diesem Dokument finden Sie Informationen über Features von Superbase 2, die in letzter Sekunde in das Programm eingebaut wurden und im Handbuch nicht mehr dokumentiert werden konnten. Wenn Sie diese Datei von der Workbench aus (durch Anklicken des Icons) geladen haben, können Sie den Text mit folgenden Tastaturbefehlen durchblättern: Leertaste: eine Seite abwärts, Return-Taste: eine Zeile abwärts, Taste B: eine Seite nach oben, Taste U: eine Zeile nach oben. Wenn Sie den Texteditor von Superbase verwenden, nehmen Sie statt dessen die Cursortasten oder die Rollbalken an der Seite des Fensters. Unterstützung der RAM-Disk (Amiga) Wenn Sie ein Programm in Verbindung mit der RAM-Disk nutzen wollen, müssen Sie das Programm normalerweise zuerst in die RAM-Disk kopieren. In Superbase 2 brauchen Sie das nicht. Wenn Sie beim Öffnen einer Datei in Superbase 2 die Laufwerkskennung RAM: angeben, wird die entsprechende Datei automatisch aus dem aktuellen Verzeichnis in die RAM-Disk geladen, wenn sie nicht schon vorhanden und zugleich geöffnet ist. Ähnliches gilt auch beim Speichern einer Datei. Superbase fragt Sie, ob die Datei in das aktuelle Verzeichnis kopiert werden soll, also auf die Diskette oder die Festplatte von der sie geladen wurde. Wenn Sie OK anklicken, wird dies ausgeführt. Wenn Sie CANCEL anklicken, wird die Datei nicht zurückkopiert und Superbase fragt Sie, ob die sich auf der RAM-Disk befindliche Kopie gelöscht werden soll. Klicken Sie nochmals CANCEL an, wenn Sie das nicht möchten. Achtung: Wenn Sie die Datei selber auf die RAM-Disk kopiert haben (wenn Sie diese Arbeit also nicht Superbase überlassen haben), dann fragt Superbase auch nicht, ob es die Datei zurückkopieren soll. Stellen Sie sich beispielsweise vor, auf der Diskette in Laufwerk DF1: befindet sich eine Datei namens "Adressen" und das aktuelle Verzeichnis ist DF1:. Um die Datei von der RAM-Disk her zu öffnen, wählen Sie die Option Öffnen, Datei im Projekt-Menü und geben dann ein: RAM:Adressen Jetzt können Sie die Datei ganz normal bearbeiten - Daten lesen, editieren, Datensätze löschen usw. - aber eben alles sehr viel schneller, weil die Zugriffe auf die RAM-Disk schneller ablaufen als auf ein Diskettenlaufwerk. Vergessen Sie am Ende der Arbeitssitzung nicht, die Datei zu schließen, denn nur dann werden die von Ihnen vorgenommenen Änderungen auch auf Diskette gespeichert (in dem Verzeichnis, von dem die Datei ursprüngliche geladen wurde). Das funktioniert übrigens auch mit anderen RAM-Disks, zum Beispiel VD0: oder VDK:. LOOKUP In Kapitel 2 befindet sich ein Abschnitt, der die zwei Arten beschreibt, wie die LOOKUP-Funktion in der Dateidefinition benutzt werden kann. Die zweite Möglichkeit - der Gebrauch von LOOKUP für Berechnungen über mehrere Dateien hinweg - ist mißverständlich und bedarf der Änderung. In diesem Abschnitt beschreiben wir zuerst das Problem und liefern dann eine Lösung dafür. Die Berechnung über mehrere Dateien verwendet ein Berechnungs-Formular in Kombination mit LOOKUP, um Daten aus anderen Dateien zu holen. Das Handbuch gibt Ihnen ein Beispiel dazu, wie zwei Felder, nämlich Bestellnummer und Einzelpreis, in einer Bestellungs-Datei verwendet werden. Mit dem Bestellnummer-Feld ist folgende Überprüfungsformel verbunden: LOOKUP (Bestellnummer.Bestellung,Bestellnummer.Bestand) Wenn im Bestellnummer-Feld neue Daten eingetragen werden, prüft die Formel, ob sie in der Bestands-Datei vorhanden sind. Dabei ruft sie auch den Datensatz in der Bestands-Datei (die die gleichen Nummern enthält) auf. Laut Handbuch können Sie folgende Berechnungs-Formel verwenden, um den entsprechenden Einzelpreis von der Bestands-Datei in das Einzelpreis- Feld der Bestellungs-Datei einzulesen: Einzelpreis.Bestand Diese Formel wird mit dem Einzelpreis-Feld in Bestellungs-Datei ver- bunden. Diese Anleitung funktioniert perfekt, wenn Sie neue Daten eintragen. Beim Editieren bereits existierender Daten können allerdings Probleme auftauchen. Nehmen wir an, daß der Cursor im Bestellnummer-Feld aktiv ist; wenn Sie nun ESC drücken und eine neue Bestellnummer eingeben, wird die LOOKUP-Formel ausgeführt und der korrekte Datensatz in der Bestand-Datei (der zweiten Datei) selektiert. Der Wert, der in das Einzelpreis-Feld eingelesen wird, ist auch korrekt. Aber manchmal liefert die Formel das falsche Ergebnis. Wenn Sie das Einzelpreis.Bestellungen-Feld editieren, ohne den Inhalt des Bestell- nummer.Bestellungen-Felds zu ändern, wird LOOKUP nicht ausgeführt und der richtige Datensatz in der zweiten Datei nicht ausgewählt. Die Berechnungs- formel, die mit dem Einzelpreis.Bestellungen-Feld verbunden ist, holt dabei immer neue Daten aus der Bestands-Datei. Da aber der aktuelle Datensatz in der Bestands-Datei seit der letzten Änderung nicht modifiziert wurde, sind die darin enthaltenen Daten für den aktuellen Bestellungen-Datensatz nicht geeignet. Die Lösung des Problems liegt darin, ein weiteres LOOKUP in die Berechnungsformel zu integrieren, das einen ternären Operator benutzt. Die Formel, die mit den Einzelpreis.Bestellungen verbunden ist, könnte also so aussehen: LOOKUP (Bestellnummer.Bestellung,Bestellnummer.Bestand)? Einzelpreis.Bestellnummer:0 Diese Formel bewirkt, daß immer dann ein LOOKUP in der Bestand-Datei gemacht wird, wenn neue Daten ins Einzelpreis.Bestellungen-Feld einge- tragen werden. Zuerst wird geprüft, ob die Bestellnummer im aktuellen Datensatz des Bestellungen-Felds in der Bestands-Datei vorhanden ist. Falls ja, ruft sie den entsprechenden Eintrag in der Bestands-Datei auf. Wenn die durch den ternären Operator ausgedrückte Bedingung erfüllt wird, wird der erste Wert nach dem Fragezeichen - das heißt der Inhalt des Einzelpreis.Bestand-Felds - dem Einzelpreis.Bestellungen-Feld zugewiesen. Wenn die Bedingung nicht wahr ist, wird der zweite Wert - in diesem Fall 0 - zugewiesen. Es liegt ganz bei Ihnen, was Sie unternehmen, wenn LOOKUP nicht erfolgreich ist. Sie können zum Beispiel in einem String-Feld eine Fehlermeldung erscheinen lassen: LOOKUP (Bestellnummer.Bestellungen,Bestellnummer.Bestand)? Beschreibung.Bestand: "Fehler" Diese Formel wird dem Beschreibungs-Feld in der Bestellungs-Datei zuge- ordnet. Falls die Bestellnummer in der Bestand-Datei nicht existiert, weist sie dem Feld den String "Fehler" zu. Andererseits könnten Sie auch eine Formel definieren, die den Inhalt des Beschreibungs-Felds bei Auftreten eines Fehlers nicht ändert: LOOKUP (Bestellnummer.Bestellung,Bestellnummer.Bestand)? Beschreibung.Bestand:Beschreibung.Bestellung Verschiedenes * Wenn Sie versuchen, eine Zeile zu drucken, die länger ist als die in den Druckeroptionen von Superbase eingestellte Zeilenlänge, gibt Super- base die Steuerzeichen für Wagenrücklauf und Zeilenvorschub aus, wenn die höchstzulässige Zeilenlänge erreicht ist. * Besitzer eines Amiga können im Optionsrequester eine Drucker- Initialisierungssequenz definieren und so die gewünschten Charakteristikaund Modi einstellen. Diese Steuersequenz wird jedesmal, wenn Sie mit Superbase drucken an den Drucker geschickt. Wenn eine solche Sequenz eingerichtet wurde, schickt Superbase die normalerweise bei Druckerzu-griffen ausgesendeten Codes für "Perforationssprung aus" und "Seiten-länge einstellen" nicht mehr an den Drucker. * Mit den Formatparametern für Ausgaben (BF, UL und IT) können Sie inner- halb eines Reports oder in den Ausgaben einer Abfrage verschiedene Schriftarten einstellen. Wenn Sie zusätzliche Druckparameter angeben möchten, fügen Sie mit der Funktion CHR$ die entsprechenden Steuerzeichen für den Drucker ein. Für einen Report, der im Formulareditor erstellt wurde,müssen Sie die Steuersequenzen im Reportprogramm eingeben. Bei Abfragen geben Sie sie einfach in der Felderzeile der Abfrage ein. Auf einigen Druckern schaltet zum Beispiel die Sequenz 27,14 um auf doppelt hohen Druck während der Steuercode 20 ihn wieder auschaltet. Wenn Sie in einer Abfrage die Daten eines Feldes besonders groß darstellen möchten, müßten Sie für so einen Drucker folgende Felderzeile schreiben: Vorname, Nachname, CHR$(27);CHR$(14);Stadt;CHR$(20), Strasse Es kann allerdings vorkommen, daß die printer device einige Steuerzeichen falsch interpretiert. Wenn das passiert, schalten sie im Optionenrequester Direktdruck ein. Dadurch umgehen Sie den Interpreter. * Dateinamen: Benutzen Sie keines der Zeichen ? # / ; oder das Leer- zeichen in Dateinamen. Wenn ein Dateiname einem Befehl wie OPEN FILE als Argument übergeben wird, muß er in Anführungszeichen gesetzt werden. Wenn ein Dateiname aber nur als Zusatz zu einem Feldnamen dient (zum Beispiel name.kunden) muß er nicht in Anführungszeichen stehen. Die Aus- nahme von der Regel ist, wenn er andere als alphanumerische Zeichen ent- hält (alles, was nicht in den Bereichen a-Z oder 0-9 liegt). Wenn Sie mit Requestern arbeiten, fügt Superbase die nötigen Anführungszeichen ein, aber wenn Sie selber Eingaben in die Befehlszeilen vornehmen, müssen Sie an diese Regel denken. * Die Steuersequenz für Zeilenschaltung ist auf dem Amiga normalerweise CHR$(10) (Zeilenvorschub). Bei den meisten anderen Computern und auch in Superbase ist die Sequenz aber CHR$(13) CHR$(10), also ein Wagenrücklauf gefolgt von einem Zeilenvorschub. Um die Kompatibilität mit dem Editor ED zu gewährleisten, kann man den Wagenrücklauf (CHR$(13)) unterdrücken, indem man in der Tool Types Liste der Icondatei von Superbase RETURN=OFF eingibt. Diese Liste erscheint auf dem Bildschirm, wenn Sie zuerst das Icon von Superbase einmal anklicken und dann die Info-Option der Workbench aufrufen.