Accueil > Manip’s > Delphi > ACCESS > DBGrid : Trier un Tableau par Champs
DBGrid : Trier un Tableau par Champs
samedi 25 décembre 2010, par
Comment Trier un Tableau de Base de Données en cliquant sur une colonne au choix ?
Composants de la fiche
ONGLET | COMPOSANT |
---|
ADO | ADOconnect |
ADO | ADOquery |
AccèsBD | Datasource |
ContrôleBD | DBgrid |
Tous ces composants sont liés entre eux comme vu en leçon 1.
Paramétrage Composant ADOquery1
SQL | SELECT * |
---|
FROM STOCK |
WHERE 1=1 |
ORDER BY INDEX |
La propriété ADOquery1.SQL se compose de 4 lignes
- SQL[0] := ’SELECT ...’ ;
- SQL[1] := ’FROM ...’ ;
- SQL[2] := ’WHERE ...’ ;
- SQL[3] := ’ORDER BY ...’ ;
C’est donc sur la 4° ligne (sql[3] :=ORDER BY) que nous allons agir !
Paramétrage DBGRID1
Evènement | OnTitleClick |
procedure TForm1.DBGrid1TitleClick(Column : TColumn) ;
- var champ : string ;
begin
- champ := column.FieldName ;
with form1.ADOQuery_STOCK do
- begin
-
- Active := false ;
-
- if SQL[3] = ’ORDER BY [’ + CHAMP + ’]’ then
-
- SQL[3] := ’ORDER BY [’ + CHAMP + ’] DESC’
-
- else
-
- = SQL[3] := ’ORDER BY [’ + CHAMP + ’]’ ;
-
- Active := True ;
- end ;
end ;
- column.FieldName, récupère le Nom de la colonne (ce qui équivaut en langage de Base de Données au Nom du Champ)
- On remarque que la Table doit être "Fermée" avant de réinjecter la Requête SQL (Active = False)
- Le saut conditionnel IF permet d’inverser l’ordre de Tri à chaque clic (DESC/ASC)