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

11. Sortieren

Für jede Tabelle einer Datenbank lässt 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.


11.1 Keine Sortierung

Standardmäßig besitzt jede neu erzeugte Tabelle keine Sortierung. Dies bedeutet, dass 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.


11.2 Sortieren nach Feldern

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ässt 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ässt sich zudem festlegen, ob die Datensätze auf- oder absteigend sortiert werden sollen.

Für die Festlegung der Reihenfolge werden die folgenden Regeln 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 unabhängig von Groß-/Klein-
                schreibung durchgeführt)

Datum           NIL < 1.1.0000 < ... < 31.12.9999

Zeit            NIL < 00:00:00 < ... < 596523:14:07

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


11.3 Sortieren nach einer Funktion

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 dass es nicht möglich ist, die Datensätze nach einem Beziehungsfeld zu sortieren. Der Grund liegt darin, dass MUIbase mit Beziehungsfeldern nicht in der Lage sein kann, alle Datensätze zu jeder Zeit sortiert zu halten (siehe Vergleichsfunktion im Abschnitt über die Programmierung von MUIbase für mehr Details).

MUIbase bietet 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 dass es z.B. auch Datensätze mit Beziehungsfeldern vergleichen kann. Mehr zu diesem Mechanismus, siehe Vergleichsfunktion.

Falls eine Vergleichsfunktion zum Sortieren einer Tabelle verwendet wird, dann sollte man beachten, dass 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.


11.4 Sortierung ändern

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:

  • den Namen der Tabelle in der Titelleiste des Fensters.
  • ein Auswahlfeld `Typ', in dem festgelegt wird, ob die Tabelle anhand der `Felderliste' oder durch Verwendung der `Vergleichsfunktion' sortiert werden soll. Abhängig vom Zustand von `Typ', können Daten in die folgenden Elemente eingegeben werden.

Für eine Sortierung anhand einer Felderliste existieren folgene Elemente:

  • eine Liste alle Felder der Tabelle, die für die Sortierliste verwendet werden können. Diese Liste ist links im Fenster angeordnet. Wenn auf einen Namen doppelt geklickt wird, dann wird der Name in der Sortierliste an der aktuellen Cursorposition eingefügt.
  • die aktuelle Liste der Felder, die zum Sortieren verwendet wird. Diese Liste ist rechts im Fenster plaziert. Das oberste Element in dieser Liste ist das erste Feld der Sortierliste. Die Reihenfolge der Elemente lässt sich durch Verschieben an andere Positionen in der Liste durchführen. Weitere Felder können auch durch Verschieben von der Feldliste in die Sortierliste hinzugefügt werden. Entfernen von Feldern aus der Sortierliste wird durch das Herausschieben des Feldes aus der Sortierliste und Ablegen desselben in der Feldliste bewerkstelligt.

    Jeder Eintrag in der Sortierliste hat auf der linken Seite ein Pfeilsymbol, das nach oben oder unten zeigt. Der Status lässt sich durch Doppelklicken auf das Pfeilsymbol umschalten. Wenn der Pfeil nach oben zeigt, dann ist die Sortierreihenfolge dieses Feldes aufsteigend, zeigt er nach unten, so ist sie absteigend.

Für eine Sortierung unter Verwendung einer Vergleichsfunktion gibt es folgende Elemente:

  • ein Feld `Funktion für den Datensatzvergleich', in dem der Name der Funktion eingegeben wird, die zum Vergleichen zweier Datensätze der Tabelle aufgerufen werden soll. Es kann der Popup-Knopf rechts neben dem Zeichenkettenfeld verwendet werden, um einen Namen aus der Liste aller Funktionen auszuwählen. Bleibt das Feld leer, dann wird keine Sortierung durchgeführt. Für mehr Informationen über die Anwendung der Vergleichsfunktion, einschließlich der Argumente, die ihr übergeben werden, siehe Vergleichsfunktion.

Des weiteren existieren folgende Knöpfe:

  • ein Knopf `Löschen', der alle Felder für eine leere Sortierung löscht.
  • zwei Knöpfe `Ok' und `Abbrechen' zum Verlassen des Fensters.

Um eine neue Feldsortierliste einzugeben, wählt man `Feldliste' im Feld `Typ' und drückt den `Löschen'-Knopf. 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.


11.5 Neu sortieren aller Datensätze

Falls jemals einige Datensätze nicht sortiert sein sollten, z.B. wenn man eine Vergleichsfunktion zum Sortieren verwendet, dann können über den Menüpunkt `Tabelle - Neu sortieren aller Datensätze' alle Datensätze neu sortiert werden.


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

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