Handbuch
Die folgende Dokumentation ist Bestandteil der BeeBase-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 | Wenn keine Sortierung der Daten gewünscht ist. | |
11.2 Sortieren nach Feldern | Wie es arbeitet. | |
11.3 Sortieren nach einer Funktion | Frei einstellbare Reihenfolge. | |
11.4 Sortierung ändern | Wie eine Reihenfolge festgelegt wird. | |
11.5 Alle Datensätze neu sortieren | Falls Datensätze mal unsortiert sein sollten. |
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 BeeBase 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 BeeBase 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 BeeBase für mehr Details).
BeeBase bietet jedoch auch die Möglichkeit, eine Vergleichsfunktion zum Sortieren der Datensätze anzugeben. Es kann jede Funktion angegeben werden, die im Programmeditor von BeeBase 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 BeeBase 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. BeeBase 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 30. September 2024 mit texi2html generiert.