BlueGEEK Journal

Accueil > Manip’s > Delphi > ACCESS > DBGrid : Trier un Tableau par Champs

DBGrid : Trier un Tableau par Champs

samedi 25 décembre 2010, par bluegyn_spip

- 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

  1. SQL[0] := ’SELECT ...’ ;
  1. SQL[1] := ’FROM ...’ ;
  1. SQL[2] := ’WHERE ...’ ;
  1. 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 ;

  1. column.FieldName, récupère le Nom de la colonne (ce qui équivaut en langage de Base de Données au Nom du Champ)
  1. On remarque que la Table doit être "Fermée" avant de réinjecter la Requête SQL (Active = False)
  1. Le saut conditionnel IF permet d’inverser l’ordre de Tri à chaque clic (DESC/ASC)