Handbuch
Die folgende Dokumentation ist Bestandteil der BeeBase-Distribution und gibt es auch als PDF.
[ << ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
14. Datenabfragen
Zur Datenabfrage bietet BeeBase zwei Möglichkeiten an: Die Programmierung und den Abfrageeditor.
Die Programmierung ermöglicht die Einrichtung von Knöpfen in der Tabellenansicht, die auf Druck Programmfunktionen aufrufen. Die Verwendung dieser Besonderheit wird im Kapitel zum Struktureditor (siehe Struktureditor) und im Kapitel über die Programmierung von BeeBase (siehe BeeBase programmieren) beschrieben.
Dieses Kapitel beschreibt die Verwendung des Abfrageeditors, ein Fenster zum Eingeben von Abfragen und Anzeigen der Ausgabe in einer verschiebbaren Listenansicht.
14.1 Select-from-where Abfragen | Wie eine Abfage aussieht. | |
14.2 Abfrageeditor | Wie Abfragen eingeben und verwaltet werden. | |
14.3 Abfragen als Text exportieren | Das Ergebnis einer Abfrage als Textdatei exportieren. | |
14.4 Abfragen als PDF exportieren | Das Ergebnis einer Abfrage als PDF-Datei exportieren. | |
14.5 Abfragen ausdrucken | Das Ergebnis einer Abfrage ausdrucken. | |
14.6 Abfragebeispiele | Einige Beispiele. |
14.1 Select-from-where Abfragen
BeeBase bietet eine Select-from-where Abfrage an, die denen in SQL-Datenbanksystemen ähnelt. Die Abfrage erlaubt es, Datensatzinhalte aus einer oder mehreren Tabellen aufzulisten. Nur die Datensätze, die bestimmten Kriterien genügen, werden in die Ausgabe einbezogen. Die (unvollständige) Syntax einer Select-from-where Abfrage ist
SELECT exprlist FROM tablelist [WHERE test-expr] [ORDER BY orderlist] |
wobei exprlist eine mit Kommas aneinandergereihte Liste von Ausdrücken ist, die ausgegeben werden sollen (normalerweise die Feldnamen) oder ein einfacher Stern *, der alle Felder der Tabelle einschließt. tablelist ist eine mit Kommas aneinandergereihte Liste von Tabellen, deren Datensätze untersucht werden sollen. test-expr ist der Ausdruck, der für jede Menge von Datensätzen, die in die Ausgabe eingeschlossen werden sollen, ausgewertet wird und orderlist ist eine mit Kommas aneinandergereihte Liste von Feldern, die die Sortierung der Ausgabeliste festlegen. Zu beachten ist, dass die Felder WHERE und ORDER BY optional sind, kenntlich gemacht durch eckige Klammern [].
Zum Beispiel listet die Abfrage
SELECT * FROM table |
die Feldinhalte aller Datensätze in der gegebenen Tabelle auf.
SELECT field1 FROM table WHERE (LIKE field2 "*Madonna*") |
listet die Inhalte des Feldes field1 aus allen Datensätzen der Tabelle table auf, deren Inhalte des Feldes field2 das Wort `Madonna' beinhaltet.
Für weitere Informationen zur Select-from-where Abfrage einschließlich ihrer vollständigen Syntax siehe BeeBase programmieren und für weitere Beispiele siehe Abfragebeispiele.
14.2 Abfrageeditor
Zum Eingeben und Ausführen von Abfragen öffnet man den Abfrageeditor über den Menüpunkt `Programm - Abfragen'. Der Abfrageeditor kann mehrere Abfragen verwalten, es kann jedoch immer nur eine Abfrage zu einem Zeitpunkt ablaufen. Das Abfrageeditor-Fenster enthält folgende Elemente:
- ein Zeichenkettenfeld mit einem anhängenden Popup-Knopf. Das änderbare Zeichenkettenfeld zeigt den Namen der aktuellen Abfrage an. Über den Popup-Knopf erscheint eine Liste mit weiteren Abfragenamen und verschiedenen Knöpfen. Man kann eine der aufgelisteten Abfragen auswählen, um diese zur aktuellen zu machen; den Knopf `Neu' drücken, um eine neue Abfrage zu beginnen; den Knopf `Duplizieren' drücken, um eine Kopie der gewählten Abfrage zu erhalten; den Knopf `Sortieren' drücken, um die Liste der Abfragen zu sortieren oder den Knopf `Löschen' drücken, um die ausgewählte Abfrage zu löschen. Um das Popup-Fenster wieder zu schließen, ohne etwas zu ändern, drückt man erneut auf den Popup-Knopf.
- ein Auswahlfeld, welches es erlaubt die Abfrage einer Tabelle zuzuordnen. Wird eine Tabelle zugeordnet, so führt BeeBase diese Abfrage aus, wenn der Benutzer den Menüpunkt `Tabelle - Alle Datensätze anzeigen' auswählt.
- ein Knopf `Ausführen', der das Abfrageprogramm kompiliert, ausführt und das Ergebnis in der Ausgabe-Listenansicht ausgibt.
- ein Knopf `Export', der ein Fenster (siehe Abfragen als Text exportieren) öffnet, um das Ergebnis der Abfrage in eine Textdatei zu exportieren.
- ein Knopf `PDF' (auf den meisten Systemen), der ein Fenster (siehe Abfragen als PDF exportieren) öffnet, um das Ergebnis der Abfrage in eine PDF-Datei zu exportieren.
- ein Knopf `Drucken', der ein Fenster (siehe Abfragen ausdrucken) öffnet, um Ergebnisse auszudrucken.
- ein Editorfeld zum Eingeben des Abfrageprogramms. Hier wird normalerwise eine Select-from-where Abfrage eingegeben. Es ist jedoch auch möglich, einen beliebigen Ausdruck der BeeBase-Programmiersprache zu verwenden. Dies kann nützlich sein, wenn einfache Berechnungen durchgeführt oder einige Felder einer Tabelle mit einem einfachen Programm aktualisiert werden sollen. Es ist zu beachten, dass BeeBase den Programmausdruck mit einem Paar Klammern umschließt, d.h. die äußeren Klammern können weggelassen werden.
- eine Listenansicht, die die Ausgabe nach dem Ausführen der aktuellen Abfrage anzeigt. Die Ausgabe ist in Zeilen und Spalten aufgeteilt. Die Titelzeile trägt die Namen der Select-from-where-Abfrage (normalerweise die Feldnamen). Die anderen Zeilen enthalten den Inhalt des Abfrageergebnisses, pro Zeile einen Datensatz. Jeder Feldeintrag wird in einer eigenen Spalte dargestellt. Ein Klick auf einen Spaltentitel bewirkt, dass die Liste nach dieser Spalte sortiert dargestellt wird. Wird auf denselben Titel erneut geklickt, dann wird die Sortierung umgedreht. Auf dem Amiga kann durch Klicken auf einen Spaltentitel bei gleichzeitigem Halten der Shift-Taste eine zweite Sortierspalte gesetzt werden. Wird auf einen Eintrag in der Liste doppelgeklickt und dieser Eintrag wurde aus einem Datensatz generiert, dann wird dieser in der zugehörigen Tabellenansicht angezeigt. Dies ist eine einfache Möglichkeit, zu einem bestimmten Datensatz in der Tabellenansicht zu springen.
Das Abfragefenster ist ein nicht-modales Fenster. Das bedeutet, dass der Abfrageeditor geöffnet bleiben und dennoch mit der Anwendung weitergearbeitet werden kann. Der Abfrageeditor lässt sich jederzeit durch das Schließsymbol in der Fenster-Titelzeile schließen.
14.3 Abfragen als Text exportieren
Das Ergebnis einer Select-From-Where-Abfrage kann durch drücken des `Export'-Knopfes in eine Textdatei ausgegeben werden. Dies öffnet ein Fenster mit folgender Struktur:
- Ein Zeichenkettenfeld zum Eingeben des Exportdateinamens. Rechts neben dem Feld gibt es einen Knopf, der zur Auswahl eines Dateinamens aus einem Dateiauswahlfenster dient.
- Zwei Zeichenkettenfelder zum Eingeben der Datensatz- und Feldtrennzeichen. Man kann ein einzelnes Zeichen oder einen erweiterten Code durch die Eingabe von \n, \t, \f, \??? (Oktalzahl) oder \x?? (Hexadezimalzahl) eingeben.
- Ein Feld `In Anführungszeichen', das eingeschaltet werden kann, um anzugeben, dass die Felder mit doppelten Anführungszeichen umgeben werden sollen.
- Zwei Knöpfe `Exportieren' und `Abbrechen', um das Fenster zu verlassen.
Nach einem Druck auf den Knopf `Exportieren' öffnet BeeBase die angegebene Datei und beschreibt sie mit dem Abfrageergebnis einschließlich einer Kopfzeile mit dem Listenkopf. Die Felder werden in der Reihenfolge der Listenspalten ausgegeben.
14.4 Abfragen als PDF exportieren
Auf Windows, Mac OS X, Linux und MorphOS kann das Abfrageergebnis durch drücken des Knopfs `PDF' in eine PDF-Datei exportiert werden.
Es wird ein Fenster geöffnet, das die folgende Elemente enthält:
- Ein Zeichenkettenfeld zum Eingeben des Exportdateinamens. Rechts neben dem Feld gibt es einen Knopf, der zur Auswahl eines Dateinamens aus einem Dateiauswahlfenster dient.
- Ein Auswahlfeld zur Angabe der Papiergröße.
- Ein Auswahlfeld zur Angabe der Orientierung (`Portrait' oder `Landschaft').
- Ein Feld zur Eingabe des Zeichensatzes und deren Größe. Auf Windows, Mac OS X und Linux kann mit dem rechtsliegendem Knopf ein Zeichensatzdialog zur Auswahl des Zeichensatzes geöffnet werden. Auf MorphOS wird der Zeichensatz in einem Auswahlfeld festgelegt und die Größe in dem rechts daneben liegendem Textfeld eingegeben. Es ist möglich Bruchteile einzugeben, z.B. `10.5'.
- Ein Textfeld für die Eingabe einer optionalen Kopfzeile. Die Kopfzeile wird am Anfang jeder Seite gedruckt. Ist keine Kopfzeile erwünscht, dann das Textfeld einfach leer lassen.
- Ein Textfeld für die Eingabe einer optionalen Fußzeile. Die Fußzeile wird am Ende jeder Seite zusammen mit der Seitenzahl gedruckt.
- Ein Statusfeld, welches die Anzahl Seiten anzeigt und angibt, ob der Inhalt in die Seitenbreite passt.
- Zwei Knöpfe `Erzeuge PDF' und `Abbruch' zum Verlassen des Fensters.
Nach drücken des Knopfs `Erzeuge PDF' öffnet BeeBase die angegebene Datei und beschreibt sie mit dem Abfrageergebnis einschließlich einer Kopfzeile mit dem Feldnamen der Abfrage. Die Felder werden in der Reihenfolge der Listenspalten ausgegeben.
14.5 Abfragen ausdrucken
Nachdem eine Abfrage durchgeführt wurde, kann das Ergebnis über den Knopf `Drucken' ausgedruckt werden.
Auf Windows, Mac OS X und Linux öffnet dies den Standard-Druckdialog.
Falls die GTK-Version von BeeBase im Einsatz ist, dann enthält der Dialog eine zusätzliche Seite `Zeichensatz', in welchem ein Zeichensatz gewählt werden kann. Weiterhin kann hier das Verkleinern der Ausgabe ermöglicht werden, so dass das Ergebnis in die Seitenbreite des gewählten Papiers und der gewählten Orientierung passt. Nach drücken des Knopfs `Drucken' wird das Abfrageergebnis auf dem gewählten Drucker ausgegeben.
Auf MorphOS öffnet der Knopf `Drucken' ein ähnliches Fenster wie beim Exportieren als PDF (siehe Abfragen als PDF exportieren). Das Fenster enthält die folgenden Elemente:
- Ein Auswahlfeld zur Angabe der Papiergröße.
- Ein Auswahlfeld zur Angabe der Orientierung (`Portrait' oder `Landschaft').
- Ein Feld zur Eingabe des Zeichensatzes und deren Größe. Auf Windows, Mac OS X und Linux kann mit dem rechtsliegendem Knopf ein Zeichensatzdialog zur Auswahl des Zeichensatzes geöffnet werden. Auf MorphOS wird der Zeichensatz in einem Auswahlfeld festgelegt und die Größe in dem rechts daneben liegendem Textfeld eingegeben. Es ist möglich Bruchteile einzugeben, z.B. `10.5'.
- Ein Textfeld für die Eingabe einer optionalen Kopfzeile. Die Kopfzeile wird am Anfang jeder Seite gedruckt. Ist keine Kopfzeile erwünscht, dann das Textfeld einfach leer lassen.
- Ein Textfeld für die Eingabe einer optionalen Fußzeile. Die Fußzeile wird am Ende jeder Seite zusammen mit der Seitenzahl gedruckt.
- Ein Statusfeld, welches die Anzahl Seiten anzeigt und angibt, ob der Inhalt in die Seitenbreite passt.
- Zwei Knöpfe `Erzeuge PDF' und `Abbruch' zum Verlassen des Fensters.
Nach drücken des Knopfs `Erzeuge PDF' generiert BeeBase eine temporäre PDF-Datei und öffnet diese mit dem externen Anzeiger (siehe Externer Anzeiger). Man kann dann die Druckmöglichkeiten des externen Anzeigers verwenden, um das Abfrageergebnis auszudrucken.
Auf anderen Amiga-Systemen wird ein Druckfenster mit den folgenden Elementen geöffnet:
- ein Bereich `Begrenzer', in dem festgelegt wird, wie die Spalten voneinander getrennt werden sollen. `Zwischenräume' füllt die Felder mit Leerzeichen auf. Dabei wird rechts oder links aufgefüllt, je nach Typ des Feldes (Zahlen werden links aufgefüllt, Texte rechts). `Tabulatoren' fügt genau ein Tabulator-Zeichen zischen den Spalten ein. Dies kann sinnvoll sein, wenn das Druckfenster zum Exportieren von Datensätzen verwendet werden soll (siehe unten). `Custom' erlaubt die Eingabe einer beliebigen Zeichenkette, die zwischen den Feldern ausgegeben werden soll.
- ein Bereich `Zeichensatz', im dem festgelegt wird, welche Druckqualität zum Drucken verwendet wird. `NLQ' steht für `near letter quality' (Beinahe-Briefqualität), das eine bessere Ausgabe als `Entwurf' erzeugt.
- ein Bereich `Größe', in dem die Zeichengröße definiert wird. `Pica' druckt mit großer Schrift (10 cpi), `Elite' in mittelgroßer Schrift (12 cpi) und `verdichtet' in kleiner Schrift (17 cpi).
- ein Zeichenkettenfeld `Initialisierungssequenz', in der eine Zeichenkette zum Zurücksetzen des Druckers eingegeben werden kann. Der Inhalt des Feldes wird direkt zum Drucker geschickt. Zum Beispiel kann man `\33c' als Rücksetzsequenz angeben, welche den Drucker zurücksetzt.
- ein Feld `Einzug', in dem die Anzahl Leerschritte eingestellt werden kann, um die jede Zeile eingerückt werden soll.
- ein Feld `Titelzeile', das die Feldnamen in der ersten Zeile ausgibt, wenn es eingeschaltet ist.
- ein Feld `Steuerzeichen'. Wenn es nicht eingeschaltet ist, dann wird die Ausgabe aller Steuerzeichen unterdrückt, d.h. die Einstellungen bei `Zeichensatz' und `Größe' werden ignoriert, ebenso wird der Inhalt der Zeichenkette `Initialisierungssequenz' nicht ausgegeben. Die Unterdrückung der Steuerzeichen ist sinnvoll, wenn eine ASCII-Datei erzeugt werden soll, z.B. zum Exportieren von Datensätzen.
- ein Feld `Anführungszeichen', welches alle Felder mit Anführungszeichen umschließt, wenn es eingeschaltet ist.
- im Bereich `Nach dem Druck' lässt sich einstellen, was nach dem Druck geschehen soll. `Seitenumbruch' druckt ein Seitenumbruchzeichen \f, `Zeilenumbrüche' eine Anzahl von Zeilenumbruchzeichen \n. Die Anzahl der Zeilenumbrüche lässt sich im Feld rechts daneben eingeben. `Nichts' druckt nichts auf dem Drucker aus.
- ein Zeichenkettenfeld `Ausgabe', das mit einem Popup-Knopf versehen ist. Der Popup-Knopf kann benutzt werden, um einen Dateinamen mit dem Dateiauswahlfenster auszuwählen, oder man gibt den Dateinamen direkt im Zeichenkettenfeld ein. Für eine Ausgabe auf dem Drucker sollte `|lpr' (Linux), bzw. `PRT:' (Amiga) im Zeichenkettenfeld eingegeben werden. Für weitere spezielle Dateinamen siehe Programm-Ausgabedatei.
- zwei Knöpfe `Ok' und `Abbrechen', um das Druckfenster zu verlassen.
Sind alle Einstellungen getan, so drückt man auf den Knopf `Ok', um den Druckauftrag zu starten.
14.6 Abfragebeispiele
Um einen Eindruck von der Leistungsfähigkeit der Select-from-where Abfragen zu bekommen, folgen einige Beispiele(2).
Angenommen, es gibt zwei Tabellen `Person' und `Dog' (Hund). `Person' besitzt ein Zeichenkettenfeld `Name', ein Ganzzahlfeld `Age' (Alter) und zwei Beziehungsfelder `Father' (Vater) und `Mother' (Mutter), die auf Datensätze in der Tabelle `Person' für den Vater und die Mutter verweisen. Die Tabelle enthält folgende Datensätze:
Name Age Father Mother
--------------------------------
p1: Steffen 26 p2 p3
p2: Dieter 58 NIL NIL
p3: Marlies 56 NIL NIL
p4: Henning 57 NIL NIL
|
`Dog' (Hund) besitzt ein Zeichenkettenfeld `Name', ein Auswahlfeld `Color' (Farbe) und ein Beziehungsfeld `Owner' (Besitzer), das auf den Besitzer in der Tabelle `Person' verweist. Die Tabelle enthält folgende Datensätze:
Name Color Owner
-----------------------
d1: Boy white p3
d2: Streuner grey NIL
|
Mit diesen Daten lassen sich folgende Select-from-where Beispielabfragen durchführen:
SELECT * FROM Person |
liefert:
Name Age Father Mother
--------------------------
Steffen 26 Dieter Marlies
Dieter 58
Marlies 56
Henning 57
|
(Für die Beziehungsfelder wird das Feld `Name' des referenzierten Datensatzes ausgegeben.)
SELECT Name "Child", Age, Father.Name "Father", Father.Age "Age", Mother.Name "Mother", Mother.Age "Age" FROM Person WHERE (AND Father Mother) |
liefert:
Child Age Father Age Mother Age
----------------------------------
Steffen 26 Dieter 58 Marlies 56
|
SELECT Name, Color, (IF Owner Owner.Name "No owner") "Owner" FROM Dogs |
liefert:
Name Color Owner
------------------------
Boy white Marlies
Streuner grey No owner
|
SELECT a.Name, a.Age, b.Name, b.Age FROM Person a, Person b WHERE (> a.Age b.Age) |
liefert:
a.Name a.Age b.Name b.Age
---------------------------
Dieter 58 Steffen 26
Marlies 56 Steffen 26
Henning 57 Steffen 26
Dieter 58 Marlies 56
Henning 57 Marlies 56
Dieter 58 Henning 57
|
[ << ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
Dieses Dokument wurde am 30. September 2024 mit texi2html generiert.