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.
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.
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 der in die Tabellenmaske übernommen.
Jede Tabelle kann seinen eigenen Filterausdruck besitzen.
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:
Nach der Festlegung des Filterausdruckes klickt man auf `Ok', um das Fenster zu verlassen. Der eingegebene Ausdruck wird kompiliert und dann wird -wenn erfolgreich kompiliert- der Ausdruck für alle Datensätze ausgewertet. Die Datensätze, für die der boolesche Ausdruck nicht gilt, werden aus der Tabellenmaske herausgehalten.
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, wenn er installiert wurde, oder durch die Taste F ein- und ausgeschaltet werden, falls das Panel das aktive Objekt ist. Nachdem ein Filterausdruck für eine Tabelle festgelegt wurde, wird er 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.
Hier ein paar Beispiele für gültige Filterausdrücke:
Es ist zu beachten, daß MUIbase's Programmiersprache eine lisp-ähnliche Syntax hat(8). Mehr dazu im Kapitel siehe MUIbase programmieren.
Beziehungsfelder besitzen auch einen Filter. Dies ist nützlich, wenn Tabellen hierarchisch aufgebaut werden sollen (wie in AmigaBase fest implementiert). Das Projekt `Albums' ist ein Beispiel dafür.
Wenn der Filter eines Beziehungsfeldes aktiviert ist, dann werden folgende Eigenschaften mit eingeschaltet:
Hinweis: Ein verschachteltes Löschen (wie es in AmigaBase automatisch gemacht wurde) muß 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. Dies macht keinen Sinn und verwirrt nur die Benutzer.
Go to the first, previous, next, last section, table of contents.