4D v14.3

MULTI SORT ARRAY

Home

 
4D v14.3
MULTI SORT ARRAY

MULTI SORT ARRAY 


 

MULTI SORT ARRAY ( ArrayName {; Sortieren}{; ArrayName2 ; Sortieren2 ; ... ; ArrayNameN ; SortierenN} ) 
Parameter Typ   Beschreibung
ArrayName  Array in Zu sortierende Array(s)
Sortieren  Operator in ">" aufsteigend sortieren oder "<" absteigend sortieren
Ohne Angabe "aa" keine Sortierung
MULTI SORT ARRAY ( ZeigerArrayName ; SortArrayName ) 
Parameter Typ   Beschreibung
ZeigerArrayName  Array Zeiger in Array der Array Zeiger
SortArrayName  Array Lange Ganzzahl in Sortierfolge Array (1 = aufsteigend, -1 = absteigend, 0 = Anpassung an vorige Sortierung)

Der Befehl MULTI SORT ARRAY sortiert einen Satz Arrays auf mehreren Ebenen.

Der Befehl akzeptiert zwei Syntaxarten.

• Erste Syntax: MULTI SORT ARRAY (Array{; Sortieren}{; Array2; Sortieren2; ...; arrayN; SortierenN})

Dies ist die einfachste Syntax; hier übergeben Sie direkt die Namen der synchronisierten Arrays, auf die Sie eine Sortierung nach mehreren Kriterien anwenden wollen.
Sie können eine unbegrenzte Anzahl an Paaren übergeben (Array;> oder <) und/oder nur Arrays. Alle als Parameter übergebenen Arrays werden aufeinander abgestimmt sortiert.
Sie können Arrays jeder Art übergeben mit Ausnahme von Zeigern oder Bildern. Sie können nach einem Element in einem zweidimensionalen Array (z.B. ein2DArray{$vlDiesesElement}) sortieren, jedoch nicht nach dem 2D Array selbst, z.B. ein2DArray).

Wollen Sie den Inhalt eines Array als Sortierkriterium zu verwenden, übergeben Sie den Parameter Sortieren. Der Wert des Parameters (> oder <) bestimmt, ob das Array in aufsteigender oder in absteigender Reihenfolge sortiert wird. Ist der Parameter Sortieren nicht angegeben, wird der Inhalt des Array nicht als Sortierkriterium verwendet.

Hinweis: Sie müssen mindestens ein Sortierkriterium übergeben, damit der Befehl funktioniert. Gibt es kein Sortierkriterium, wird ein Fehler generiert.

Die Sortierebenen richten sich nach der Reihenfolge, in welcher die Arrays im Befehl übergeben wurden. Die Position eines Array mit einem Sortierkriterium in der Syntax bestimmt seine Sortierebene.

• Zweite Syntax: MULTI SORT ARRAY (ZeigerArrayName; SortArrayName)

Diese Syntax ist komplexer und hilfreich bei generischer Entwicklung. Sie können z.B. eine generische Methode erstellen, um Arrays jeglichen Typs zu sortieren, ja sogar die Entsprechung eines generischen Befehls SORT ARRAY erstellen.
Der Parameter ZeigerArrayName enthält den Namen eines Arrays mit Array Zeigern; jedes Element dieses Arrays ist ein Zeiger auf ein zu sortierendes Array. Die Sortierung erfolgt in der Reihenfolge, wie die Array Zeiger in ZeigerArrayName definiert sind.

Hinweis: ZeigerArrayName kann das Array eines lokalen ($ptrArrayName), Prozess (ZeigerArrayName) oder Interprozess (<>ZeigerArrayName) Zeigers sein.
Umgekehrt dürfen die Elemente dieses Array nur auf Arrays vom Typ Prozess oder Interprozess zeigen.

Der Parameter SortArrayName Parameter kann das Array eines lokalen ($ZeigerArrayName), Prozess (ZeigerArrayName) oder Interprozess (<>ZeigerArrayName) Zeigers sein.
Umgekehrt dürfen die Elemente dieses Array nur auf Arrays vom Typ Prozess oder Interprozess zeigen.
0 = Das Array wird nicht als Sortierkriterium verwendet, sondern muss passend zu den anderen Sortierungen sortiert werden.
1 = Aufsteigend sortieren.
-1 = Absteigend sortieren

Hinweise: Arrays vom Typ Zeiger oder Bild lassen sich nicht sortieren. Sie können ein Element eines zweidimensionalen Array (z.B. a2DArray{$vlThisElement}) sortieren, jedoch nicht das 2D Array selbst (z.B. a2DArray).
Jedes Element des Array ZeigerArrayName muss eine Entsprechung im Array SortArrayName haben. Deshalb müssen beide Arrays exakt dieselbe Anzahl Elemente haben.

Folgendes Beispiel verwendet die 1. Syntax: Es erstellt vier Arrays und sortiert sie nach Stadt in aufsteigender Reihenfolge, dann nach Lohn in absteigender Reihenfolge mit den beiden letzten Arrays names_array und telNum_array, die mit dem vorigen Sortierkriterium synchronisiert wird:

 ALL RECORDS([Employees])
 SELECTION TO ARRAY([Employees]City;cities;[Employees]Salary;
 salaries;[Employees]Name;names;[Employees]TelNum;telNums)
 MULTI SORT ARRAY(cities;>;salaries;<;names;telNums)

Wollen Sie das Array Namen als 3. Sortierkriterium verwenden, fügen Sie nach dem Parameter names_array das Zeichen > oder < zu.

Beachten Sie, dass die Syntax:

 MULTI SORT ARRAY(cities;>;salaries;names;telNums)

gleichbedeutend ist mit:

 SORT ARRAY(cities;salaries;names;telNums;>)

Folgendes Beispiel verwendet die 2. Syntax: Es erstellt vier Arrays und sortiert sie nach Stadt (aufsteigend) und Firma (absteigend); die beiden letzten Arrays names_Array und telNum_Array werden an die vorigen Sortierkriterien angepasst:

 ALL RECORDS([Employees])
 SELECTION TO ARRAY([Employees]City;cities;[Employees]Company;
 companies;[Employees]Name;names;[Employees]TelNum;telNums)
 ARRAY POINTER(pointers_Array;4)
 ARRAY LONGINT(sorts_Array;4)
 pointers_Array{1}:=->cities
 sorts_Array{1}:=1
 pointers_Array{2}:=->companies
 sorts_Array{2}:=-1
 pointers_Array{3}:=->names
 sorts_Array{3}:=0
 pointers_Array{4}:=->telNums
 sorts_Array{4}:=0
 MULTI SORT ARRAY(pointers_Array;sorts_Array)

Wollen Sie als drittes Sortierkriterium ein Array mit Namen verwenden, müssen Sie im Element sorts_Array{3} den Wert 1 zuweisen. Sollen die Arrays nur nach der Stadt sortiert werden, übergeben Sie in den Elementen sorts_Array{2}, sorts_Array{3} und sorts_Array{4} den Wert 0 (Null). Auf diese Weise erhalten Sie ein identisches Ergebnis zu SORT ARRAY(cities;companies;names;telNums;>).

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Arrays
Nummer: 718

 
GESCHICHTE 

Geändert: 4D 2004

 
SIEHE AUCH 

ORDER BY
SELECTION TO ARRAY
SORT ARRAY

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v14 R2)
4D Programmiersprache ( 4D v14 R3)
4D Programmiersprache ( 4D v13.5)
4D Programmiersprache ( 4D v14.3)
4D Programmiersprache ( 4D v14 R4)

Geerbt von : MULTI SORT ARRAY ( 4D v11 SQL Release 6)