MUIbase Support This Project
programmable relational database
with graphical user interface
This page is also available in English Français

Handbuch

Die folgende Dokumentation ist Bestandteil der MUIbase-Distribution und gibt es auch als PDF.


[ << ] [ >> ]           [Anfang] [Inhalt] [Index] [ ? ]

14. Datenabfragen

Zur Datenabfrage bietet MUIbase 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 MUIbase (siehe MUIbase 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

MUIbase 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 attr1 FROM table WHERE (LIKE attr2 "*Madonna*")

listet die Inhalte des Feldes attr1 aus allen Datensätzen der Tabelle table auf, deren Inhalte des Feldes attr2 das Wort `Madonna' beinhaltet.

Für weitere Informationen zur Select-from-where Abfrage einschließlich ihrer vollständigen Syntax siehe MUIbase 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 MUIbase 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 MUIbase-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 MUIbase 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 MUIbase 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.

Unter Windows, Mac OS X und Linux öffnet dies den Standard-Druckdialog, in welchem der Eintrag `In Datei drucken' mit dem Format `PDF' vorausgewählt ist. Der Dialog enthält 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 in die angegebene Datei ausgegeben.

Auf MorphOS 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 Auswahlfeld zur Auswahl des Zeichensatzes mit einem Zeichenkettenfeld für die Eingabe der Zeichensatzgröße. Es ist möglich Bruchteile einzugeben, z.B. `10.5'.
  • 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 MUIbase 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.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. Der Dialog enthält 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 Auswahlfeld zur Auswahl des Zeichensatzes mit einem Zeichenkettenfeld für die Eingabe der Zeichensatzgröße. Es ist möglich Bruchteile einzugeben, z.B. `10.5'.
  • 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 MUIbase 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 10. October 2017 mit texi2html generiert.