DISTINCT VALUES

4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 6.5 Geändert


DISTINCT VALUES (Feld; Array)

ParameterTypBeschreibung
FeldFeld/UnterfeldFeld oder Unterfeld für Daten
ArrayArrayArray, das indizierte Daten aus Feldern erhält

Beschreibung

Der Befehl DISTINCT VALUES erstellt und füllt Array mit nicht-wiederholten (einmaligen) Werten aus dem Datenfeld Feld für die aktuelle Auswahl der Tabelle, zu der das Datenfeld bzw. Unterdatenfeld gehört.

Sie können in diesem Befehl jedes indizierbare Feld oder Unterfeld übergeben, d.h. dessen Typ die Indizierung unterstützt, auch wenn es derzeit nicht indiziert ist.

Der Befehl ist jedoch langsamer, wenn auf nicht-indizierte Felder ausgeführt wird. Beachten Sie, dass er in diesem Fall auch den aktuellen Datensatz verliert.

Hinweis: Da dieser Befehl nun mit indizierten und nicht-indizierten Feldern funktioniert, lässt sich die Art der Ausführung über den Befehl SET DATABASE PARAMETER festlegen.

Übergeben Sie das Datenfeld einer Tabelle, durchläuft und entnimmt DISTINCT VALUES nicht-wiederholte Werte nur aus der aktuellen Auswahl der Datensätze. Übergeben Sie ein Unterdatenfeld, durchläuft er alle Unterdatensätze in jedem Datensatz der aktuellen Auswahl.

Hinweis: Ab 4D Version 6.5 berücksichtigt DISTINCT VALUES beim Aufrufen während einer noch nicht abgeschlossenen Transaktion die Datensätze, die in dieser Transaktion erstellt wurden.

In früheren Versionen von 4D akzeptierte dieser Befehl nur Datenfelder vom Typ Alphanumerisch. Ab Version 6 können Sie auch jedes indizierte Datenfeld oder Unterdatenfeld verwenden. Der Befehl bleibt dagegen ohne Wirkung bei indizierten Datenfeldern vom Typ Boolean.

Erstellen Sie ein Array vor dem Aufrufen, erwartet DISTINCT VALUES einen Array-Typ, der mit dem übergebenen Datenfeld oder Unterdatenfeld kompatibel ist. Ansonsten erstellt DISTINCT VALUES ein Array von eigenem Typ. Ist das Datenfeld bzw. Unterdatenfeld vom Typ Zeit, erwartet oder erstellt der Befehl ein Array vom Typ Lange Ganzzahl.

Nach dem Aufruf ist die Größe des Array gleich der Anzahl der in der Auswahl gefundenen eindeutigen Werte. Der Befehl ändert weder die aktuelle Auswahl noch den aktuellen Datensatz. Da DISTINCT VALUES mit dem Index des Datenfelds arbeitet, werden die Elemente in Array in aufsteigender Reihenfolge sortiert übertragen. Bei anderer Reihenfolge müssen Sie nach dem Befehl SORT ARRAY aufrufen.

WARNUNG: DISTINCT VALUES erstellt u.U. umfangreiche Arrays, je nach Größe der Auswahl und Anzahl der verschiedenen Werte in den Datensätzen. 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.

4D Server: DISTINCT VALUES wurde für 4D Server optimiert. Das Array wird auf dem Server erstellt und berechnet; es wird dann komplett auf den Client-Rechner übertragen.

Beispiele

1. Folgendes Beispiel erstellt eine Städteliste aus der aktuellen Auswahl und teilt dem Benutzer die Anzahl der Städte mit, in denen die Firma Läden unterhält:

   ALL RECORDS([Retail Outlets]) ` Erstelle eine Datensatzauswahl
   DISTINCT VALUES([Retail Outlets]City;asCities) 
   ALERT("Die Firma hat Läden in " +String(Size of array(asCities))+" cities.")

2. Folgendes Beispiel gibt in asKeywords alle in einer Untertabelle eingetragenen Schlüsselwörter zum Thema "Economy" zurück, die zu den 4D Write Dokumenten aus der Tabelle [Documentation] gehören:

   QUERY ([Documentation];[Documentation]Theme="Economy")
   DISTINCT VALUES([Documentation]Keywords'Keyword;asKeywords)

Über dieses Array finden Sie dann schnell alle Dokumente, die das ausgewählte Schlüsselwort enthalten:

   QUERY ([Documentation];[Documentation]Keywords'Keyword=asKeywords{asKeywords})
   SELECTION TO ARRAY ([Documentation]Subject;asSubjects)
      ` ...

Referenz

ON ERR CALL, SELECTION RANGE TO ARRAY, SELECTION TO ARRAY, SET DATABASE PARAMETER.


4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next