Data.DB.TDataSet.Filter
Delphi
property Filter: string read FFilterText write SetFilterText;
C++
__property System::UnicodeString Filter = {read=FFilterText, write=SetFilterText};
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
property | public | Data.DB.pas Data.DB.hpp |
Data.DB | TDataSet |
Description
Spécifie le texte du filtre en cours sur un ensemble de données.
Utilisez Filter pour spécifier un filtre d'ensemble de données. Quand le filtrage est appliqué à un ensemble de données, seuls les enregistrements vérifiant les conditions du filtre sont disponibles. Filter décrit la condition de filtrage.
Par exemple :
- Pour que IBX.IBTable.TIBTable affiche uniquement les enregistrements pour lesquels le champ 'France' ou 'Fiji' :
Country = 'France' or Country = 'Fiji'
Vous pouvez utiliser l'opérateur LIKE dans la condition, avec des caractères génériques SQL standard tels que pour cent (%) et souligné (_). La condition de filtrage suivante récupère tous les enregistrements dont le champ Country commence par "F" :
Country LIKE 'F%'
Pour visualiser les lignes contenant la valeur NULL dans la colonne Country et une valeur différente de NULL dans Contact_Name, utilisez l'opérateur IS :
Country is NULL and Contact_Name is not NULL
Vous pouvez aussi utiliser des expressions complexes dans des clauses de filtrage. L'exemple suivant récupère les lignes contenant des valeurs Country qui utilisent les Francs comme devise (Currency).
Country IN (SELECT Country from Country where Currency = '_Franc')
- Pour Data.DB.TDataSet, la condition de filtre suivante n'affiche que les enregistrements dont le champ State contient 'CA' ou 'MA' :
State = 'CA' or State = 'MA'
L'exemple d'exécution suivant présente l'assignation de cette expression de filtrage à la propriété Data.DB.TDataSet.Filter et l'activation du filtre.
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;
Quand un filtre est défini, les enregistrements vides n'apparaissent pas, sauf s'ils sont explicitement inclus dans le filtre. Par exemple :
State <> 'CA' ou State = NULL
Par exemple :
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;
Si un nom de champ contient des espaces, vous devez le placer entre crochets. Par exemple :
[Home State] = 'CA' or [Home State] = 'MA'
Les expressions de filtre sur des tables SQL distantes et les ensembles de données client autorisent les comparaisons de champ. Par exemple :
Field1 > Field2
Les comparaisons de champs ne sont pas supportées sur des tables locales (Paradox, dBASE, Access, FoxPro).
Pour obtenir la liste complète des opérateurs que vous pouvez utiliser dans des chaînes de filtrage, consultez Définition de la propriété Filter.
Remarque : Les filtres ne sont pas supportés sur les ensembles de données unidirectionnels. Si vous définissez la propriété Filter d'un ensemble de données unidirectionnel, une exception est déclenchée.
La propriété FilterOptions contrôle la différenciation majuscule/minuscule et le filtrage selon des comparaisons partielles.
Conseil : Les applications peuvent initialiser Filter à l'exécution pour modifier la condition de filtrage de l'ensemble de données (par exemple en réponse à une saisie de l'utilisateur).
Voir aussi
- Data.DB.TDataSet.Filtered
- Data.DB.TDataSet.FilterOptions
- Data.DB.TDataSet.OnFilterRecord
- Data.DB.TDataSet.Locate
- Data.DB.TDataSet.Lookup
- Création de filtres
- Navigation parmi les enregistrements d'un ensemble de données filtré
- Définition de la propriété Filter
- Affichage et édition d'ensembles de données en utilisant des filtres
Exemples
- Exemple FireDAC TFDQuery Filter