4D v14.3

ORDER BY

Home

 
4D v14.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.

Der Benutzer legt die Sortierkriterien fest und klickt dann auf die Schaltfläche Sortieren, um die Sortierung auszuführen. 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.

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

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.

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 sortiert die Auswahl von [Products] nach Name in aufsteigender Reihenfolge:

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

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 Indices). Das Datenfeld kann zur Tabelle der Auswahl oder zu einer Eine-Tabelle gehören, die über eine automatische oder manuelle 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.

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

 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;>)

Wollen Sie mehrfach sortieren, rufen Sie ORDER BY so oft, wie notwendig auf und geben den optionalen Parameter * an, jedoch 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 übergeben.

Klickt der Benutzer in der Anwendungsumgebung in einem Ausgabeformular in den Spaltentitel, wird diese Spalte in aufsteigender Reihenfolge sortiert.
Klickt er bei gedrückter Umschalttaste in einen anderen 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

4D zeigt Ihnen den Sortierablauf während der Suche an. Wird das Ablaufthermometer angezeigt, kann der Benutzer die Sortierung mit der Schaltfläche Stop unterbrechen. Mit den Befehlen MESSAGES ON, MESSAGES OFF können Sie diese Anzeige an- bzw. abschalten. Bricht der Anwender die Sortierung ab, wird OK auf 0 gesetzt, sonst auf 1.

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Suchen
Nummer: 49

Dieser Befehl ändert die Systemvariable OKDieser Befehl ändert den aktuellen Datensatz

 
GESCHICHTE 

Geändert: 4D v11 SQL

 
SIEHE AUCH 

ORDER BY FORMULA

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v12.4)
4D Programmiersprache ( 4D v11 SQL Release 6)
4D Programmiersprache ( 4D v14 R3)
4D Programmiersprache ( 4D v14 R2)
4D Programmiersprache ( 4D v13.5)
4D Programmiersprache ( 4D v14.3)
4D Programmiersprache ( 4D v14 R4)