4D v16.3

ORDER BY

Home

 
4D v16.3
ORDER BY

ORDER BY 


 

ORDER BY ( {Tabellenname ;}{ Feldname }{; >oder< }{; Feldname2 ; >oder<2 ; ... ; FeldnameN ; >oder<N}{; *} ) 
Parameter Typ   Beschreibung
Tabellenname  Tabelle in Tabelle, deren ausgewählte Datensätze sortiert werden sollen
Ohne Angabe Haupttabelle
Feldname  Feld in Feld, nach dem sortiert werden soll
>oder<  Operator in Sortierrichtung für jede Ebene: > aufsteigend, < absteigend
Operator in Sortiermodus beibehalten

ORDER BY sortiert die aktuelle Auswahl des laufenden Prozesses von Tabellenname. 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. Gibt es keine Standardtabelle, tritt ein Fehler auf.
Geben Sie die Parameter Feldname, >oder< bzw. * nicht an, zeigt ORDER BY für Tabellenname den Sortiereditor. Er sieht folgendermaßen aus:

Weitere Informationen dazu finden Sie im Abschnitt Sortiereditor des Handbuchs 4D Designmodus.

Geben Sie Datenfeld und >oder< an, erscheint nicht der Sortiereditor, die Sortierung erfolgt per Programmierung. Sie können die Auswahl nach einer oder mehreren Ebenen sortieren. Geben Sie für jede Ebene Datenfeld und die Sortierreihenfolge >oder< an. “Größer als” (>) sortiert in aufsteigender Reihenfolge, “Kleiner als” (<) in absteigender Reihenfolge.
Ohne Festlegung wird in aufsteigender Reihenfolge sortiert.

Ist nur ein Datenfeld angegeben (1 Sortierebene) und ist dieses indiziert, wird mit Index sortiert. Ist das Datenfeld nicht indiziert bzw. gibt es mehrere Datenfelder, wird sequentiell sortiert (mit Ausnahme von zusammengesetzten Indizes). Das Datenfeld kann zur Tabelle der Auswahl oder zu einer Eine-Tabelle gehören, die über eine automatische Verknüpfung mit Tabellenname verbunden ist. In diesem Fall ist die Sortierung immer sequentiell.
Sind die sortierten Felder in einem zusammengesetzten Index integriert, verwendet ORDER BY den Index der Sortierung.

Für mehrfache Sortierung (Sortierung mehrerer Felden) rufen Sie ORDER BY so oft, wie notwendig auf und geben den optionalen Parameter * an, mit Ausnahme des letzten Aufrufs, denn der startet die aktuelle Sortierung. Damit können Sie in individuell erstellten Benutzerumgebungen die Mehrfachsortierung verwalten.
Achtung: Mit dieser Syntax können Sie pro Aufruf von ORDER BY nur eine Sortierebene (Feld) übergeben.

Bei länger andauernden Sortierungen zeigt 4D automatisch eine Meldung mit Ablaufbalken an. Mit den Befehlen MESSAGES ON, MESSAGES OFF können Sie diese Anzeige an- bzw. abschalten. Erscheint der Ablaufbalken, kann der Benutzer die Sortierung mit der Schaltfläche Stop unterbrechen.

Läuft die Sortierung ohne Unterbrechung, nimmt die Systemvariable OK den Wert 1 an. Klickt der Benutzer auf die Schaltfläche Abbrechen, wird die Sortierung annulliert, die Systemvariable OK nimmt dann den Wert 0 (Null) an.

 

Hinweis: Dieser Befehl unterstützt keine Felder vom Typ Objekt.

Folgende Zeile zeigt den Sortiereditor für die Tabelle [Products]:

 ORDER BY([Products])

Folgende Zeile zeigt den Sortiereditor für die Standardtabelle (sofern vorhanden)

 ORDER BY

Folgende Zeile sortiert die Auswahl von [Products] nach Name in aufsteigender Reihenfolge:

 ORDER BY([Products];[Products]Name;>)

Folgende Zeile sortiert die Auswahl von [Products] nach Name in absteigender Reihenfolge:

 ORDER BY([Products];[Products]Name;<)

Folgende Zeile sortiert die Auswahl von [Products] nach Typ und Preis, beide Male in aufsteigender Reihenfolge:

 ORDER BY([Products];[Products]Type;>;[Products]Price;>)

Folgende Zeile sortiert die Auswahl von [Products] nach Typ und Preis, beide Male in absteigender Reihenfolge:

 ORDER BY([Products];[Products]Type;<;[Products]Price;<)

Folgende Zeile sortiert die Auswahl von [Products] nach Typ in aufsteigender Reihenfolge, nach Preis in absteigender Reihenfolge:

 ORDER BY([Products];[Products]Type;>;[Products]Price;<)

Folgende Zeile sortiert die Auswahl von [Products] nach Typ in absteigender Reihenfolge, nach Preis in aufsteigender Reihenfolge:

 ORDER BY([Products];[Products]Type;<;[Products]Price;>)

Folgende Zeile führt eine indizierte Sortierung aus, wenn [Products]Name indiziert ist:

 ORDER BY([Products];[Products]Name;>)

Folgende Zeile sortiert die Auswahl von [Products] nach Name in aufsteigender Reihenfolge:

 ORDER BY([Products];[Products]Name)

Folgende Zeile führt eine sequentielle Sortierung aus, egal ob die Datenfelder indiziert sind oder nicht:

 ORDER BY([Products];[Products]Type;>;[Products]Price;>)

Folgende Zeile führt eine sequentielle Sortierung mit verknüpften Datenfeld aus:

 ORDER BY([Invoices];[Companies]Name;>)
  ` Rechnungen werden alphabetisch nach dem Datenfeld Firmenname sortiert.

Folgendes Beispiel führt eine indizierte Sortierung auf zwei Ebenen aus, wenn in der Anwendung der zusammengesetzte Index [Contacts]LastName + [Contacts]FirstName angegeben ist.

 ORDER BY([Contacts];[Contacts]LastName;>;[Contacs]FirstName;>)

In einem Ausgabeformular in der Anwendungsumgebung richten Sie ein, dass der Benutzer durch Klick in den Spaltentitel diese Spalte in aufsteigender Reihenfolge sortieren kann.
Klickt er bei gedrückter Umschalttaste in andere Spaltentitel, wird in mehreren Ebenen sortiert:

Jeder Spaltentitel hat eine hervorgehobene Schaltfläche mit folgender Objektmethode:

 MULTILEVEL(->[CDs]Titel`Name der Schaltfläche für Spaltentitel

Jede Schaltfläche ruft die Projektmethode MULTILEVEL mit einem Zeiger auf das entsprechende Spaltenfeld auf. Die Projektmethode lautet:

  ` Projektmethode MULTILEVEL
  ` MULTILEVEL (Zeiger)
  ` MULTILEVEL (->[Tabelle]Feld)
 
 C_POINTER($1`Sortierebene (Feld)
 C_LONGINT($lEbeneNr)
 
  `Erhalte Sortierebenen
 If(Not(Shift down)) `Einfaches Sortieren (eine Ebene))
    ARRAY POINTER(aPtrSortFeld;1)
    aPtrSortFeld{1}:=$1
 Else
    $lEbeneNr:=Find in array(aPtrSortFeld;$1`Ist dieses Feld schon sortiert?
    If($lEbeneNr<0) `Wenn nicht
       INSERT ELEMENT(aPtrSortFeld;Size of array(aPtrSortFeld)+1;1)
       aPtrSortFeld{Size of array(aPtrSortFeld)}:=$1
    End if
 End if
  `Führe Sortierung aus
 $lEbeneNr:=Size of array(aPtrSortFeld)
 If($lEbeneNr>0) `Es gibt mindestens eine Sortierebene
    For($i;1;$lEbeneNr)
       ORDER BY([CDs];(aPtrSortFeld{$i})->;>;*) `Erstelle eigene Sortierung
    End for
    ORDER BY([CDs]`Ohne * endet die eigene Sortierung und die aktuelle Sortierung startet
 End if



Siehe auch 

ORDER BY FORMULA

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Suchen
Nummer: 49

Dieser Befehl ändert die Systemvariable OKDieser Befehl ändert den aktuellen DatensatzThis command can be run in preemptive processes

 
GESCHICHTE 

Geändert: 4D v11 SQL

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)