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] [ ? ]

10. Filter

Filter können verwendet werden, um Datensätze auszublenden. Dieses Kapitel beschreibt, welche Typen von Filter es gibt und wie sie angewandt werden.

MUIbase kennt zwei Arten von Filter: Datensatzfilter und Referenzfilter.


10.1 Datensatzfilter

Ein Datensatzfilter kann in eine Tabelle eingebaut werden, um Datensätze herauszufiltern, die nicht von Interesse sind. Datensätze, die herausgefiltert werden, sind aus der Tabellenmaske ausgenommen und können daher vom Benutzer nicht angesehen bzw. durchgeforstet werden.


10.1.1 Filterausdruck

Ein Filter wird durch die Angabe eines Booleschen Ausdruckes festgelegt, der Funktionsaufrufe zu MUIbase-Programmierfunktionen beinhalten kann. Für jeden Datensatz in der Tabelle, zu der der Filter festgelegt wurde, wird dieser Ausdruck ausgewertet. Wenn er NIL liefert, dann wird der Datensatz ausgenommen, anderenfalls wird er in die Tabellenmaske übernommen.

Jede Tabelle kann seinen eigenen Filterausdruck besitzen.


10.1.2 Filter ändern

Um den Filter einer Tabelle zu ändern, wählt man den Menüpunkt `Tabelle - Ändere Filter'. Dies öffnet ein Fenster, das folgende Punkte enthält:

  • den Namen der Tabelle im Fenstertitel, zu der der Filter installiert werden soll.
  • eine Liste aller Felder der Tabelle, die im Filterausdruck verwendet werden können. Diese Liste ist im linken Teil des Fensters angeordnet. Wenn auf einen Namen doppelt geklickt wird, dann wird der Name im Filterausdruck an der aktuellen Cursorposition eingefügt.
  • Eine Sammlung von Knöpfen, die MUIbase-Programmierfunktionen und -Operatoren anzeigen, die im rechten Teil des Fensters plaziert sind. Nach einem Klick wird die entsprechende Funktion zum Filterausdruck hinzugefügt. Anzumerken ist, dass die Liste der Funktionen nicht vollständig ist. Andere MUIbase-Funktionen müssen daher von Hand eingegeben werden. Es können nur solche MUIbase-Funktionen verwendet werden, die keine Seiteneffekte haben; z.B. ist es nicht möglich, in einem Filterausdruck Daten in eine Datei zu schreiben.
  • ein Zeichenkettenfeld für die Eingabe des Filterausdruckes. Feld- und Funktions-/Operatornamen werden hier eingefügt. Man kann hier auch direkt einen Filterausdruck eingeben.
  • zwei Knöpfe `Ok' und `Abbrechen', um das Fenster zu verlassen.

Nach der Festlegung des Filterausdruckes klickt man auf `Ok', um das Fenster zu verlassen. Der eingegebene Ausdruck wird kompiliert und bei fehlerfreier Kompilation wird der Ausdruck für alle Datensätze ausgewertet. Die Datensätze, für die der Boolesche Ausdruck NIL ergibt, werden aus der Tabellenmaske ausgeblendet.

Falls der Ausdruck nicht kompiliert werden konnte, erhält man eine Nachricht, die in der Titelleiste des Fensters angezeigt wird.

Ein Filter kann über den Knopf `F' im Panel der Tabelle, sofern er installiert wurde, ein- und ausgeschaltet werden. Nachdem ein Filterausdruck für eine Tabelle festgelegt wurde, wird der Filter für diese Tabelle automatisch aktiviert.

Wenn ein Filter (de)aktiviert wird, dann werden alle Datensätze geprüft, ob sie dem Filter genügen oder nicht.

Wenn ein Filter aktiv ist und ein (filter-relevantes) Feld in einem Datensatz dieser Tabelle geändert wird, dann wird der Filterstatus des Datensatzes nicht neu berechnet und bleibt unverändert.

Wenn ein neuer Datensatz in einer Tabelle mit einem aktivierten Filter hinzugefügt wird, dann wird keine Überprüfung durchgeführt, ob der neue Datensatz dem Filter genügt und der neue Datensatz erhält den Filterstatus TRUE.


10.1.3 Filterbeispiele

Hier ein paar Beispiele für gültige Filterausdrücke:

  • `NIL' filtert alle Datensätze heraus (es wird also kein Datensatz mehr angezeigt).
  • `TRUE' filtert keinen Datensatz heraus (es werden alle Datensätze angezeigt).
  • `0' entspricht `TRUE', ebenso wie alle Ausdrücke die einen Wert ungleich NIL liefern.
  • `(> Wert 100.0)' zeigt nur die Datensätze an, bei denen das Feld `Wert' größer als 100.0 ist (wir setzen hier voraus, dass die Tabelle ein Feld `Wert' vom Typ Fließkommazahl besitzt).
  • `(NOT (LIKE Name "*x*"))' filtert alle Datensätze heraus, die den Buchstaben `x' im Feld `Name' (ein Zeichenkettenfeld) haben.

Es ist zu beachten, dass MUIbase's Programmiersprache eine Lisp-ähnliche Syntax hat. Mehr dazu im Kapitel MUIbase programmierenn.


10.2 Referenzfilter

Beziehungsfelder besitzen auch einen Filter. Dies ist nützlich, wenn Tabellen hierarchisch aufgebaut werden sollen. Das Projekt `Albums' ist ein Beispiel dafür.

Wenn der Filter eines Beziehungsfeldes aktiviert ist, dann werden folgende Eigenschaften mit eingeschaltet:

  1. Der Benutzer kann nur auf Datensätze in der Tabelle des Feldes zugreifen, die eine Referenz auf den aktuellen Datensatz der referenzierten Tabelle haben.

  2. Wenn die referenzierte Tabelle ihren aktuellen Datensatz ändert, dann wird auch ein neuer Datensatz für die Tabelle des Feldes gesucht und gesetzt.

  3. Wenn ein neuer Datensatz angelegt wird, dann wird die Beziehung automatisch auf den aktuellen Datensatz der referenzierten Tabelle gesetzt.

Hinweis: Ein verschachteltes Löschen muss vom Benutzer selbst implementiert werden (indem man die Auslösefunktion für das Löschen von Datensätzen verwendet).

Es sollten keine Referenzfilter für zyklische Pfade, wie z.B. Referenzen auf die eigene Tabelle, verwendet werden, da diese wenig Sinn machen.


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

Dieses Dokument wurde am 10. October 2017 mit texi2html generiert.