Go to the first, previous, next, last section, table of contents.


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.

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 dem gesamten Ausdruck 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, daß 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.

Weitere Informationen zur Select-from-where Abfrage einschließlich ihrer vollständigen Syntax, siehe MUIbase programmieren und für weitere Beispiele siehe Abfragebeispiele.

Abfrageeditor

Zum Eingeben und Ausführen von Abfragen öffnet man den Abfrageeditor über den Menüpunkt `Programm - Abfragen...'. Der Abfrageeditor kann mehrere Abfragen verwalten, aber es kann jedoch immer nur eine Abfrage zu einem Zeitpunkt ablaufen. Das Abfrageeditor-Fenster enthält folgende Elemente:

Das Abfragefenster ist ein Nicht-modales Fenster. Das bedeutet, daß der Abfrageeditor geöffnet bleiben und dennoch mit der Anwendung weitergearbeitet werden kann. Der Abfrageeditor läßt sich jederzeit durch das Schließsymbol in der Fenster-Titelzeile schließen.

Abfragen ausdrucken

Wenn eine Abfrage durchgeführt wurde, dann kann das Ergebnis über den Knopf `Drucken' in eine Datei oder auf den Drucker ausgedruckt werden. Dies öffnet ein Druckfenster mit den folgenden Elementen:

Wenn alle Einstellungen gemacht sind, drückt man auf den Knopf `Ok', um den Druckauftrag zu starten.

Das Druckfenster kann auch zum Exportieren von Datensätzen in eine ASCII-Datei verwendet werden. Dazu stellt man `Tabulatoren' im Bereich `Begrenzer' ein, setzt die Anzahl der Leerzeichen für den Einzug auf 0, schaltet `Titelzeile?' ein, schaltet `Steuerzeichen?' aus, um die Zeichensatz-, Größen- und Initialisierungseinstellungen zu unterdrücken, schaltet ggf. `Anführungszeichen?' ein, wenn die Feldinhalte mit Anführungszeichen umschlossen werden sollen, schaltet `Nichts' im Bereich `Nach dem Druck' ein und gibt den Namen der Ausgabedatei im Feld `Ausgabe' an. Die Benutzung des Abfrageeditors mit dem Druckfenster zum Exportieren von Datensätzen kann leistungsfähiger sein als der Im-/Export von MUIbase (siehe Import und Export), da im Abfrageeditor jede Abfrage eingegeben werden kann, wohingegen das Exportfenster nur eine feste Abfrage verwendet.

Abfragebeispiele

Um einen Eindruck von der Leistungsfähigkeit der Select-from-where Abfragen zu bekommen, im folgenden einige Beispiele(13).

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


Go to the first, previous, next, last section, table of contents.