Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
ORDER BY ATTRIBUTE

ORDER BY ATTRIBUTE 


 

ORDER BY ATTRIBUTE ( {Tabellenname ;} Objektfeld ; Attributpfad ; > oder < {; Objektfeld2 ; Attributpfad2 ; > oder <2 ; ... ; ObjektfeldN ; AttributpfadN ; > oder <N} {; *} ) 
Parameter Typ   Beschreibung
Tabellenname  Tabelle in Tabelle, deren ausgewählte Datensätze sortiert werden sollen
Ohne Angabe Haupttabelle
Objektfeld  Objektfeld in Objektfeld mit dem Attribut zum Sortieren
Attributpfad  String in Name oder Pfad des Attributs zum Setzen der Sortierrichtung für jede Ebene
> oder <  Operator in Sortierrichtung für jede Ebene: > aufsteigend, < absteigend
Operator in Sortiermodus beibehalten

Der Befehl ORDER BY ATTRIBUTE sortiert (reorders) die Datensätze der aktuellen Auswahl von Tabellenname für den aktuellen Prozess nach dem Inhalt des Attributpfads von ObjektFeld. Ist die Sortierung abgeschlossen, wird der erste Datensatz der Auswahl zum aktuellen Datensatz.

Geben Sie den Parameter Tabellenname nicht an, bezieht sich der Befehl auf die Standardtabelle, falls angegeben. Sonst verwendet 4D die Tabelle des ersten Feldes, das als Parameter übergeben ist.

In Objektfeld übergeben Sie das Objektfeld, dessen Attribut sie für die Sortierung verwenden wollen. Dieses Feld kann zu Tabellenname gehören oder zu einer damit verknüpften Tabelle mit automatischer oder manueller Verknüpfung. In diesem Fall ist die Sortierung immer sequentiell.

In Attributpfad übergeben Sie den Pfad des Attributs, dessen Werte Sie zum Sortieren der Datensätze verwenden wollen, z.B. "children.girls.age".

Hinweise:

  • Nur Attribute mit skalaren Werten (Zahl, Text, Boolean, Datum) lassen sich sortieren. Andere Werte (Objekt, Bild, etc.) werden als Nullwerte gewertet.
  • In Attributpfad können Sie kein Element eines Arrrays übergeben (in diesem Fall wird ein Fehler zurückgegeben).
  • Beachten Sie, dass Attributnamen zwischen Groß- und Kleinschreibung unterscheiden: So wird im gleichen Datensatz zwischen "MyAtt" und "myAtt" unterschieden.
  • Sie können keine Attribute verwenden, die im Namen Sonderzeichen wie "." oder "[ ]" enthalten, da diese im Sortierstring als Tokens interpretiert werden. Weitere Informationen dazu finden Sie im Abschnitt Identifier für Objekteigenschaft

Enthält das Feldattribut Werte in verschiedenen Datentypen (z.B. Zahlen, Strings, Booleans), werden sie zuerst nach Typ, dann nach Wert gruppiert.

Ist der Wert des Feldattributs für einige Datensätze Null (z.B. der Attributwert ist Null oder Attributpfad existiert nicht im Feld) gilt folgendes:

  • Bei aufsteigender Sortierung (>) werden Datensätze mit dem Wert Null an den Anfang der Auswahl gesetzt.
  • Bei absteigender Sortierung (<) werden Datensätze mit dem Wert Null an das Ende der Auswahl gesetzt.

Sie können die Auswahl nach einer oder mehreren Ebenen sortieren. Für jede Sortierebene geben Sie ein Objektfeld, einen Attributpfad und die Sortierrichtung > oder < an. Mit dem Symbol “größer als” (>) wird in aufsteigender Richtung sortiert, mit dem Symbol “kleiner als” (<) in absteigender Richtung. Geben Sie keine Sortierrichtung an, wird standardmäßig in aufsteigender Richtung sortiert.
Ist nur ein Feld angegeben (eine Sortierebene) und es ist indiziert, wird der Index für die Sortierung verwendet. Ist das Feld nicht indiziert oder gibt es mehrere Felder, wird die Sortierung sequentiell ausgeführt.

Bei Mehrfachsortierung (Sortierung über mehrere Felder) können Sie ORDER BY ATTRIBUTE so oft wie erforderlich aufrufen und den optionalen Parameter * setzen, außer für den letzten Aufruf von ORDER BY ATTRIBUTE, der dann den Sortiervorgang startet. Dieses Feature ist hilfreich zum Verwalten von Mehrfachsortierungen in angepassten Benutzeroberflächen. Sie können auch Aufrufe von ORDER BY ATTRIBUTE mit Aufrufen von ORDER BY kombinieren.

Hinweis: Mit dieser Syntax  können Sie nur eine Sortierebene (Feld) pro Aufruf von ORDER BY ATTRIBUTE übergeben.

Unabhängig von der Art der Sortierung zeigt 4D automatisch eine Meldung mit einem Ablaufbalken, wenn der Sortiervorgang eine Zeit lang andauert. Diese Meldung lässt sich über die Befehle MESSAGES ON und MESSAGES OFF an- und abschalten. Erscheint der Ablaufbalken, kann der Benutzer auf die Schaltfläche Stop klicken, um die Sortierung zu unterbrechen. Ist die Sortierung abgeschlossen, wird OK auf 1 gesetzt. Wird sie unterbrochen, wird OK auf 0 (Null) gesetzt.

Die aktuelle Auswahl nach Alter (absteigend) und dann nach Name (aufsteigend) sortieren. Die Eingabereihenfolge ist:

// [Customer]OB_Info contents partial export
{"LastName":"Giorgio","age":33,"client":true},
{"LastName":"Sarah","age":42,"client":true},
{"LastName":"Mikken","age":"Forty-six","client":true},
{"LastName":"Wesson","age":44,"client":true},
{"LastName":"Johnson","age":44,"client":false},
{"LastName":"Hamp","age":"Sixty","client":true},
{"LastName":"Smeldorf","age":33,"client":true},
{"LastName":"Martin","client":true],
{"LastName":"Evan","age":36,"client":true},
{"LastName":"Collins","age":33,"client":true,"Sex":"female"},
{"LastName":"Garbando","age":60,"client":false,"Sex":"male"},
{"LastName":"Smeldorf","age":54,"client":true},
{"LastName":"Smith","age":42,"client":true},
{"LastName":"Jones","age":52,"client":true},
{"LastName":"Kerrey","age":44,"client":true},
{"LastName":"Gordini","client":true},
{"LastName":"Delaferme","age":54,"client":true},
{"LastName":"Belami","age":"Forty-six","client":true},
{"LastName":"Smeldorf","age":22,"client":true},
{"LastName":"Smeldorf","age":70,"client":true}

Mit dieser Anweisung:

 ORDER BY ATTRIBUTE([Customer];[Customer]OB_Info;"age";<;[Customer]OB_Info;"LastName";>)

werden Datensätze in folgender Reihenfolge sortiert:

{"LastName":"Smeldorf","age":70,"client":true}
{"LastName":"Garbando","age":60,"client":false,"Sex":"male"},
{"LastName":"Delaferme","age":54,"client":true}, 
{"LastName":"Smeldorf","age":54,"client":true},
{"LastName":"Jones","age":52,"client":true},
{"LastName":"Johnson","age":44,"client":false},
{"LastName":"Kerrey","age":44,"client":true},
{"LastName":"Wesson","age":44,"client":true},
{"LastName":"Sarah","age":42,"client":true},
{"LastName":"Smith","age":42,"client":true},
{"LastName":"Evan","age":36,"client":true},
{"LastName":"Collins","age":33,"client":true,"Sex":"female"},
{"LastName":"Giorgio","age":33,"client":true},
{"LastName":"Smeldorf","age":33,"client":true},
{"LastName":"Smeldorf","age":22,"client":true},
{"LastName":"Hamp","age":"Sixty","client":true}, //Stringwerte in Alter
{"LastName":"Belami","age":"Forty-six","client":true}, //werden separat verwaltet
{"LastName":"Mikken","age":"Forty-six","client":true}
{"LastName":"Gordini","client":true}, //stehen am Ende, da
{"LastName":"Martin","client":true}, //Alter null ist (fehlt)



Siehe auch 

Download HDI database

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Suchen
Nummer: 1407

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v16 R2

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)