Für jede Tabelle einer Datenbank läßt sich festlegen, in welcher Reihenfolge dessen Datensätze angezeigt werden sollen. Dieses Kapitel beschreibt, wie eine Reihenfolge festgelegt werden und welche Konsequenzen dies haben kann.
Standardmäßig besitzt jede neu erzeugte Tabelle keine Sortierung. Dies bedeutet, daß beim Einfügen eines neuen Datensatzes der generierte Datensatz an der aktuellen Position, d.h. hinter dem aktuellen Datensatz, eingefügt wird. Beim Verändern der Felder eines Datensatzes verändert sich die Position des Datensatzes innerhalb der Tabelle nicht.
Manchmal ist es sinnvoll, die Datensätze nach bestimmten Feldern zu sortieren, z.B. nach dem Feld `Name', wenn die Tabelle ein solches hat.
In MUIbase läßt sich für jede Tabelle eine Liste von Feldern festlegen, nach denen die Datensätze sortiert werden sollen. Alle Datensätze werden zuerst nach dem ersten Feld dieser Liste sortiert. Falls zwei Datensätze in einem Feld gleich sind, dann legt das nächste Feld in der Liste die Reihenfolge fest. Für jedes Feld läßt sich zudem festlegen, ob die Datensätze auf- oder absteigend sortiert werden sollen.
Um die Reihenfolge zu erkennen, werden die Regeln der folgenden Tabelle verwendet:
Typ Reihenfolge Ganzzahl NIL < MIN_INT < ... < -1 < 0 < 1 < ... < MAX_INT Auswahl (Auswahlwerte werden als Ganzzahlen angesehen) Fließkommazahl NIL < -HUGE_VAL < ... < -1.0 < 0.0 < 1.0 < ... < HUGE_VAL Zeichenkette NIL < "" < ... < "a" < "AA" < "b" < ... mehrz. Text (Zeichenkettenvergleich wird größenunabhängig durchgeführt) Datum NIL < 1.1.0000 < ... < 31.12.9999 Zeit NIL < 00:00:00 < ... < 23:59:59 Bool NIL < TRUE Beziehung NIL < any_record (Datensätze selbst können nicht zum Sortieren verwendet werden)
Wenn eine Sortierung für eine Tabelle festgelegt wurde, dann werden die Datensätze automatisch neu angeordnet, wenn ein neuer Datensatz hinzugefügt oder ein Feld eines Datensatzes verändert wird, das für die Sortierung relevant ist.
Manchmal ist ein komplexeres Sortierungsschema als die einfache Felderliste nützlich, die im vorherigen Abschnitt beschrieben wurde. Beispielsweise kann die Felderliste keine Beziehungsfelder aufnehmen, so daß es nicht möglich ist, die Datensätze nach einem Beziehungsfeld zu sortieren. Der Grund liegt darin, daß MUIbase mit Beziehungsfeldern nicht in der Lage sein kann, alle Datensätze zu jeder Zeit sortiert zu halten (siehe Comparison function im Abschnitt über die Programmierung von MUIbase für mehr Details).
MUIbase bietet nun jedoch auch die Möglichkeit, eine Vergleichsfunktion zum Sortieren der Datensätze anzugeben. Es kann jede Funktion angegeben werden, die im Programmeditor von MUIbase geschrieben wurde. Die Funktion wird mit zwei Datensatz-Zeigern aufgerufen und der Rückgabewert soll die Sortierung der beiden Datensätze anzeigen. Die Funktion kann jede Operation zum Vergleich von Datensätzen verwenden, so daß es z.B. auch Datensätze mit Beziehungsfeldern vergleichen kann. Mehr zu diesem Mechanismus, siehe Comparison function.
Falls eine Vergleichsfunktion zum Sortieren einer Tabelle verwendet wird, dann sollte man beachten, daß MUIbase nicht immer erkennen kann, wann Datensätze der Tabelle sortiert werden müssen, da die Abhängigkeiten unbekannt sind. Wenn Datensätze unsortiert sind, dann ruft man den Menüpunkt `Tabelle - Alle Datensätze neu sortieren' auf.
Um eine Sortierung für die aktuelle Tabelle zu erstellen, wird der Menüpunkt `Tabelle - Ändere Sortierung...' ausgewählt. Dies öffnet ein Fenster, das folgende Punkte enthält:
Für eine Sortierung anhand einer Felderliste existieren folgene Elemente:
Für eine Sortierung unter Verwendung einer Vergleichsfunktion gibt es folgende Elemente:
Des weiteren existieren folgende Knöpfe:
Um eine neue Feldsortierliste einzugeben, wählt man `Feldliste' im Feld `Typ' und drückt den `Löschen'-Knopf. Um eine neue Sortierliste zu erzeugen, drückt man zuerst den Knopf `Löschen'. Anschließend wird wie oben beschrieben per Verschieben & Ablegen eine neue Liste von Feldern angelegt. Wenn keine Sortierung gewünscht ist, dann fügt man einfach keine Felder der Sortierliste hinzu.
Ist die Sortierung festgelegt, wird der Knopf `Ok' gedrückt. MUIbase sortiert dann alle Datensätze der Tabelle. Da dies etwas Zeit in Anspruch nimmt, wird ein Mauszeiger mit Wartesymbol erscheinen.
Falls man das Gefühl hat, daß einige Datensätze nicht sortiert seien, wenn man z.B. eine Vergleichsfunktion zum Sortieren verwendet, dann können über den Menüpunkt `Tabelle - Neu sortieren aller Datensätze' alle Datensätze neu sortiert werden.
Go to the first, previous, next, last section, table of contents.