|
Tutoriaux
- Base de données - Filtres |
Les filtres limitent
la vue de la table à certains enregistrements.
Pour établir
un filtre, il faut mettre la propriété "Filtered"
du composant Table à "True".
Cela permet de mettre le filtre actif.
procedure
TForm1.Button1Click(Sender: TObject);
begin
Table1.Filtered:=True;
end;
|
|
Vous pouvez également établir les options du filtres.
Voici un tableau regroupant les différentes options du filtre.
Valeur
|
Description
|
foCaseInsensitive
|
Les
chaînes littérales du filtre sont comparées
sans tenir compte de la casse. |
foNoPartialCompare
|
Les
astérisques (*) du filtre sont traités comme des littéraux
plutôt que comme des caractères génériques.
Quand les options du filtre n'incluent pas foNoPartialCompare, les
chaînes qui se terminent par un astérisque signifient
une correspondance partielle, l'astérisque correspondant
à n'importe quel nombre de caractères. |
procedure
TForm1.Button1Click(Sender: TObject);
begin
Table1.FilterOptions:=[foCaseInsentive];
end;
|
|
Ensuite, vous n'avez
plus qu'à filtrer ce que vous souhaitez.
procedure
TForm1.Button1Click(Sender: TObject);
begin
Table1.Filter:='Nom=''Fr*''';
end;
|
|
Les enregistrements
commençant par "Fr" seront sélectionnés.
Par exemple "Free"
sera sélectionné.
Pour supprimer un
filtre, il suffit de mettre la propriété "Filtered"
du composant Table à False.
procedure
TForm1.Button1Click(Sender: TObject);
begin
Table1.Filtered:=False;
end;
|
|
On utilisera pour
cela l'événement OnFilterRecord.
Lorsque la propriété "Filtered" du composant
TTable est à "True" alors cet événement
se produit pour chaque enregistrement.
procedure
TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
Var Valeur:String;
begin
Valeur:=Table1.FieldByName('Nom').Value;
Accept:=(Valeur='Free');
end; |
|
Les enregistrements
de la table qui contiendront "Free" pour champ "Nom"
seront acceptés.
Limiter le nombre
d'enregistrement |
On a besoin pour
cela d'une variable que l'on incrémentera.
Elle permettra ainsi de limiter le nombre d'enregistrement.
public
{ Déclarations publiques
}
Compteur: Integer;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Compteur:=0;
end;
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Inc(Compteur);
Accept:=Compteur<=5;
end;
|
|
Cet exemple se limite
à cinq enregistrements.
Pour effectuer
ce type de filtre, il suffit d'indiquer la valeur de départ avec
la méthode "SetRangeStart" et d'indiquer la valeur
de fin avec la méthode "SetRangeEnd" puis d'appliquer
le filtre avec "ApplyRange"
procedure
TForm1.Button1Click(Sender: TObject);
begin
Table1.SetRangeStart;
Table1.FieldByName('ID').AsInteger:=0;
Table1.SetRangeEnd;
Table1.FieldByName('ID').AsInteger:=10;
Table1.ApplyRange;
end;
|
|
La méthode SetRange
permet de faire cette opération en une seule ligne.
procedure
TForm1.Button1Click(Sender: TObject);
begin
Table1.SetRange([0],[10]);
end;
|
|
|