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

Home

 
4D v20 R7
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.

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.  Achtung: Alle Arrays, auf die ptrArrayName zeigt, müssen die gleiche Anzahl von Elementen haben.

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

Für jedes Element des Arrays ptrArrayName muss es ein entsprechendes Element des Arrays sortArrayName geben. Beide Arrays müssen also genau die gleiche Anzahl von Elementen haben.

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).
  • Sie können Objekt-Arrays sortieren. Null-Elemente werden gruppiert und Array-Elemente werden mit einer internen Reihenfolge sortiert. 

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



Siehe auch 

ORDER BY
SELECTION TO ARRAY
SORT ARRAY

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Arrays
Nummer: 718

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Geändert: 4D 2004

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)