4D v14.3

SELECTION RANGE TO ARRAY

Home

 
4D v14.3
SELECTION RANGE TO ARRAY

SELECTION RANGE TO ARRAY 


 

SELECTION RANGE TO ARRAY ( Start ; Ende {; Feld | Tabelle ; ArrayName} {; Feld | Tabelle2 ; ArrayName2 ; ... ; Feld | TabelleN ; ArrayNameN} ) 
Parameter Typ   Beschreibung
Start  Lange Ganzzahl in Datensatznummer, ab der Daten geholt werden
Ende  Lange Ganzzahl in Datensatznummer, bis zu der Daten geholt werden
Feld | Tabelle  Feld, Tabelle in Feld zum Daten holen oder Tabelle zum Holen von Datensatznummern
ArrayName  Array in Array, das Datenfelder bzw. Datensatznr. erhält

Der Befehl SELECTION RANGE TO ARRAY erstellt ein oder mehrere Arrays und kopiert Daten aus Feldern oder Datensatznummern aus der aktuellen Auswahl in die Arrays.

SELECTION RANGE TO ARRAY gilt, im Gegensatz zu SELECTION TO ARRAY, die für die gesamte aktuelle Auswahl gilt, nur für den durch die Parameter Start und Ende festgelegten Bereich.

Sie müssen für diesen Befehl in Start und Ende Datensatznummern übergeben. Verwenden Sie dafür die Formel 1 <= start <= end <= Records in selection ([...]).

Übergeben Sie 1 <= start = end < Records in selection ([...]), werden Datenfelder bzw. die Datensatznummer des Datensatzes geladen, für den gilt Start = End.

Übergeben Sie falsche Datensatznummern, führt der Befehl folgendes aus:

  • Ist Ende > Records in selection ([...]), gibt er Werte zurück vom in Start festgelegten Datensatz bis zum letzten ausgewählen Datensatz.
  • Ist Start > Ende, gibt er nur Werte aus dem in Start festgelegten Datensatz zurück.
  • Passen beide Parameter nicht zur Größe der Auswahl, gibt er leere Arrays zurück.

SELECTION RANGE TO ARRAY gilt wie SELECTION TO ARRAY für die Auswahl der Tabelle, die im ersten Parameter festgelegt wurde.

Mit SELECTION RANGE TO ARRAY können Sie wie mit SELECTION TO ARRAY:

  • Werte aus einem oder mehreren Datenfeldern laden.
  • Mit der Syntax ...;[table];Array;... Datensatznummern laden.
  • Werte aus verknüpften Datenfeldern laden, wenn zwischen den Tabellen eine automatische Viele-zu-Eine Verknüpfung besteht oder zuvor SET AUTOMATIC RELATIONS aufgerufen wurde, um manuelle Viele-zu-Eine Verknüpfung zu automatisieren. In beiden Fällen werden Werte aus Tabellen mit mehrstufigen Viele-zu-Eine Verknüpfungen geladen.

Jedes Array erhält den Typ des Datenfelds.

Wenden Sie SELECTION RANGE TO ARRAY auf ein Feld vom Typ Zeit an, müssen Sie beachten, dass diese Befehle nur ein Array vom Typ Zeit anlegen, wenn für das Array noch kein anderer Typ definiert wurde. So bleibt zum Beispiel im folgenden Kontext myArray ein Array vom Typ Lange Ganzzahl:

 ARRAY LONGINT(myArray;0)
 SELECTION TO ARRAY([myTable]myTimeField;myArray)

Datensatznummern werden in ein Array vom Typ Lange Ganzzahl geladen.

Hinweis: Sie können den Befehl SELECTION RANGE TO ARRAY nur mit den Parametern Start und Ende aufrufen. Mit dieser speziellen Syntax können Sie für eine eingeschränkte Auswahl über den Parameter * eine gesammelte Reihe von SELECTION TO ARRAY Befehlen ausführen (siehe Beispiel 4).

4D Server: SELECTION RANGE TO ARRAY wurde für 4D Server optimiert. Jedes Array wird auf dem Server erstellt und dann komplett auf den Client-Rechner übertragen.

WARNUNG: SELECTION RANGE TO ARRAY erstellt u.U. umfangreiche Arrays, je nach dem in Start und Ende festgelegten Bereich bzw. Typ und Umfang der zu ladenden Daten. Da Arrays im Speicher bleiben, empfehlen wir, das Ergebnis nach Ende des Befehls zu testen. Prüfen Sie die Größe jedes resultierenden Array oder sichern Sie den Aufruf dieses Befehls mit einer Projektmethode ON ERR CALL.

War der Befehl erfolgreich, ist die Größe jedes resultierenden Array gleich (Ende-Start)+1, außer der Parameter Ende ist größer als die Anzahl der Datensätze in der Auswahl. In diesem Fall enthält jedes resultierende Array (Records in selection([...])-Start)+1 Elemente.

Folgender Code berücksichtigt die ersten 50 Datensätze aus der aktuellen Auswahl für die Tabelle [Invoices]. Er lädt die Werte aus dem Datenfeld [Invoices]Invoice ID und dem verknüpften Datenfeld [Customers]Customer ID.

 SELECTION RANGE TO ARRAY(1;50;[Invoices]Invoice ID;alInvoID;
 [Customers]Customer ID;alCustID)

Folgender Code berücksichtigt die letzten 50 Datensätze aus der aktuellen Auswahl für die Tabelle [Invoices]. Er lädt die Datensatznummern aus [Invoices] sowie aus der Verknüpfung zu [Customers]:

 lSelSize:=Records in selection([Invoices])
 SELECTION RANGE TO ARRAY(lSelSize-49;lSelSize;[Invoices];alInvRecN;
 [Customers];alCustRecN)

Folgender Code erstellt, in Segmenten zu je 1000 Datensätzen, eine umfangreiche Auswahl, die nicht als ein Ganzes in Arrays geladen werden kann:

 lMaxPage:=1000
 lSelSize:=Records in selection([Phone Directory])
 For($lPage ;1;1+((lSelSize-1)\lMaxPage))
  ` Lade Werte und/oderDatensatznummern
    SELECTION RANGE TO ARRAY(1+(lMaxPage*($lPage-1));
    lMaxPage*$lPage;...;...;...;...;...;...)
  ` Führe etwas aus mit den Arrays
 End for

Die ersten 50 aktuellen Datensätze der Tabelle [Invoices] zum Laden verschiedener Arrays verwenden:

  // Anweisungen sammeln
 SELECTION TO ARRAY([Invoices]InvoiceRef;arrLInvRef;*)
 SELECTION TO ARRAY([Invoices]Date;arrDInvDate;*)
 SELECTION TO ARRAY([Clients]ClientRef;arrLClientRef;*)
  // Gesammelte Anweisungen ausführen
 SELECTION RANGE TO ARRAY(1;50)

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Arrays
Nummer: 368

Im remote Modus anderes Verhalten

 
GESCHICHTE 

Erstellt: < 4D v6
Geändert: 4D v13

 
SIEHE AUCH 

ON ERR CALL
SELECTION TO ARRAY
SET AUTOMATIC RELATIONS

 
ARTIKELVERWENDUNG

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

Geerbt von : SELECTION RANGE TO ARRAY ( 4D v13.5)