Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Base de données - Filtres

Présentation

Les filtres limitent la vue de la table à certains enregistrements.

Etablir un filtre

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é.


Supprimer un filtre

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;



Etablissement dynamique

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.


Filtres avec des bornes

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;


Tous droits réservés - Contacts
Haut de la page