Data.DB.TDataSet.Filter

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

property Filter: string read FFilterText write SetFilterText;

C++

__property System::UnicodeString Filter = {read=FFilterText, write=SetFilterText};

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
property public
Data.DB.pas
Data.DB.hpp
Data.DB TDataSet


Beschreibung

Gibt den Text des aktuellen Filters einer Datenmenge an.

Geben Sie mit Filter einen Datenmengenfilter an. Wird eine Datenmenge gefiltert, sind nur die Datensätze verfügbar, die den angegebenen Bedingungen entsprechen. Die Eigenschaft Filter beschreibt die Filterbedingung.

Zum Beispiel:

  • Wenn Sie für IBX.IBTable.TIBTable nur die Datensätze anzeigen möchten, bei denen das Feld Country den Wert 'France' oder 'Fiji' enthält, geben Sie folgenden String ein:
Country = 'France' or Country = 'Fiji'

Sie können die SQL-Platzhalterzeichen wie Prozent (%) und Unterstrich (_) zusammen mit dem Operator LIKE verwenden. Durch die folgende Filtebedingung werden alle Länder abgerufen, die mit 'F' beginnen:


Country LIKE 'F%'


Wenn Sie die Zeilen anzeigen möchten, bei denen die Spalte Country den Wert NULL und das Feld Contact_Name nicht den Wert NULL aufweist, verwenden Sie den Operator IS:


Country is NULL and Contact_Name is not NULL


In einem Filter können natürlich auch komplexe Ausdrücke angegeben werden. Das folgende Beispiel ruft die Datensätze mit Ländern ab, in denen als Währung Francs verwendet werden.


Country IN (SELECT Country from Country where Currency = '_Franc')


  • Für Data.DB.TDataSet werden durch den folgenden Filter nur die Datensätze angezeigt, bei denen im Feld State der Wert 'CA' oder 'MA' enthalten ist:

State = 'CA' or State = 'MA'

Das folgende Beispiel zeigt, wie der Eigenschaft Data.Win.ADODB.TCustomADODataSet.Filter dieser Filterausdruck zur Laufzeit zugewiesen und der Data.Win.ADODB.TCustomADODataSet.Filter aktiviert wird.

with ADODataSet1 do begin
Filtered := False;
Filter := 'State = ' + QuotedStr('CA') + ' OR ' +
'State = ' + QuotedStr('CA');
Filtered := True;
end;
ADODataSet1->Filtered = false;
ADODataSet1->Filter = "State = " + QuotedStr("CA") + " OR " + "State = " + QuotedStr("CA");
ADODataSet1->Filtered = true;

In einer gefilterten Datenmenge werden leere Datensätze nur angezeigt, wenn diese explizit in den Filter einbezogen werden. Zum Beispiel:

State <> 'CA' or State = BLANK

Zum Beispiel:

with ADODataSet1 do begin
Filtered := False;
Filter := 'State = ' + QuotedStr('CA') + ' OR ' +
'State = NULL';
Filtered := True;
end;


ADODataSet1->Filtered = false;
ADODataSet1->Filter = "State = " + QuotedStr("CA") + " OR " + "State = NULL";
ADODataSet1->Filtered = true;


Feldnamen mit Leerzeichen müssen in eckige Klammern gesetzt werden. Zum Beispiel:

[Home State] = 'CA' or [Home State] = 'MA'

Filter-Ausdrücke für externe SQL-Tabellen und Client-Datenmengen unterstützen Feldvergleiche. Zum Beispiel:

Field1 > Field2

Feldvergleiche werden aber nicht für lokale Tabellen (Paradox, dBASE, Access, FoxPro) unterstützt.

Eine Liste mit allen Operatoren, die in Filter-Strings verwendet werden können, finden Sie unter Die Eigenschaft Filter festlegen.

Hinweis: Unidirektionale Datenmengen unterstützen keine Filter. Wenn Sie der Eigenschaft Filter einer solchen Datenmenge einen Wert zuweisen, wird eine Exception ausgelöst.

Mit der Eigenschaft FilterOptions kann die Berücksichtigung von Groß-/Kleinschreibung und Teilvergleichen gesteuert werden.

Tipp: Die Anwendungen können Filter zur Laufzeit setzen, um die Filterbedingung der Datenmenge zu ändern (beispielsweise als Reaktion auf eine Benutzereingabe).

Siehe auch

Beispiele