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.
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.
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.
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.
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.