Sortieren von Datensätzen (FireDAC)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Arbeiten mit Datenmengen (FireDAC)


Allgemeine Informationen

Alle FireDAC-Datenmengen bieten Möglichkeiten zum lokalen Sortieren der Datensätze. Vor der Sortierung von Datensätzen ruft FireDAC alle Datensätze aus der Ergebnismenge ab. FireDAC erstellt und verwaltet intern eine Liste der sortierten Datensätze. Bei großen Datensatzmengen kann die Sortierung lange dauern, aber die folgende Navigation in den Datensätzen ist genauso schnell wie ohne Sortierung.

Standardsortierung

Zum Sortieren von Datensätzen nach Feldwerten verwendet die Anwendung die Eigenschaft IndexFieldNames. Die Eigenschaft unterstützt mehrere Felder, Groß-/Kleinschreibung und eine absteigende Sortierung. Außerdem können Sie mit FormatOptions.SortOptions die Eigenschaften der Sortierreihenfolge ändern. Zum Beispiel:

FDQuery1.IndexFieldNames := 'ORDERID';

oder

FDQuery1.IndexFieldNames := 'OrderDate:D;Price';

Wenn in einer Datenmenge Indizes in der Indexes-Sammlung definiert sind, können Sie alternativ einen der Indizes auswählen. Verwenden Sie dazu die Eigenschaft IndexName. Zum Beispiel:

with FDQuery1.Indexes.Add do begin
  Name := 'By OrderDate';
  Fields := 'OrderDate';
  Active := True;
end;
FDQuery1.IndexName := 'By OrderDate';

Datenmengenansichten

In FireDAC können mithilfe der Indexes-Sammlung Ansichten für die Datensätze der Datenmenge definiert werden. Die folgenden TFDIndex-Eigenschaften steuern die Ansicht:

Die Eigenschaft Name enthält den Namen der Ansicht. Dieser Name muss in der Datenmenge eindeutig sein.

Die Ansicht stellt eine Liste mit Datensätzen dar, die von FireDAC beim Abrufen oder Bearbeiten von Datensätzen durch die Anwendung verwaltet wird. Die Ansicht wird beibehalten, wenn sowohl die Eigenschaft Active als auch die Eigenschaft IndexesActive der Datenmenge auf True gesetzt ist. Wenn in den Optionen für die Ansicht die Eigenschaften soUnique oder soPrimary gesetzt sind, aber für die Anwendung eindeutige Datensätze erforderlich sind, setzen Sie die Eigenschaft ConstraintsEnabled der Datenmenge auf True.

Wenn die Ansicht ausgewählt ist, stellt die Datenmenge die von dieser Ansicht verwaltete Datensatzliste dar. Setzen Sie zum Auswählen der Ansicht deren Eigenschaft Selected auf True, oder setzen Sie die Eigenschaft IndexName der Datenmenge auf den Namen der Ansicht. Zum Beispiel:

with FDQuery1.Indexes.Add do begin
  Name := 'May sale dates';
  Fields := 'OrderDate';
  Filter := 'MONTH(OrderDate) = 5';
  Distinct := True;
  Active := True;
  Selected := True;
end;

Weitere Optionen

Einige Navigationsmethoden, wie Locate/Lookup/SetRange, verwenden zur Optimierung ihrer Funktion die aktuelle Sortierreihenfolge. Die Eigenschaft Filter verwendet die Ansichten nicht zur Optimierung der Filterung.

Die Anwendung kann die Felder fkInternalCalc und fkAggregate bei der Sortierung verwenden. FireDAC unterstützt die Sortierung von Feldern mit den Typen fkCalculated und fkLookup nicht. Als Workaround kann die Anwendung das fkInternalCalc-Feld erstellen, in der Ereignisbehandlungsroutine OnCalcFields mit den fkCalculated- oder fkLookup-Feldwerten füllen und dann nach diesem fkInternalCalc-Feld sortieren.

Zum Sortieren von Datensätzen nach ursprünglichen Datensatzreihenfolgen (da die Datensätze abgerufen und /oder hinzugefügt wurden) verwenden Sie '#' als Wert für die Eigenschaften IndexFieldNames und Fields.

TFDTable und Sortierung

Die TFDTable-Sortierung wird serverseitig durchgeführt (ORDER BY). FireDAC fügt der Sortierreihenfolge automatisch und transparent Primärschlüsselfelder hinzu. Dies ist für eine ordnungsgemäße Live-Datenfensterfunktionalität erforderlich.

Siehe auch

Beispiele