Bonjour à toutes et à tous,
J'ai besoin de trier un dbgrid au clique sur les entete de colonne, jusque là rien de compliquer et tout fonctionne bien.
Mais si je fais une requet de ce style
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Select CodeFacture, CodeArticle, Sum(Quantite) as SommeDeQte From EnteteFacture Group By Codefacture, CodeArticle
si je clique dans mon DBGrid sur la colonne codefacture ou codeArticle cela tri dans l'ordre croissant ou décroissant sans probleme grace à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 procedure TFTravail.DBGrid1TitleClick(Column: TColumn); begin With Query Do Begin Try SQL.Clear; Sql.Add(Requete.Text); if ColonneCliquee <> '' then Begin if Tri = ' ASC' Then Tri := ' DESC' else Tri := ' ASC'; Sql.Add('Order By '+ Column.FieldName + Tri); end; Open; // Etc... end;
Evidement si je clique sur la troisieme colonne nommé automatique en SommeDeQte, alors ADO renvoi un erreur puisqu'il ne trouve pas le field associé.
Comment peut-on solutionner se problème ?
- existe-t-il un moyen de faire un tri (order by) par le numero de champs, je connais Column.Index mais je vois pas comment m'en servir
- dois-je parcouri les champs entre SELECT et FROM ? et m'amuse à récupérer le nom du champ entre les parenthèse ? (délicat si je cumul des requetes) ?
avez-vous une idée ?
Partager