procedure
TFormTable
.
fDBGridEhSortMarkingChanged(Sender: TObject);
var
query, column , order_query :
string
;
sortIndex, i :
integer
;
col : TColumnEh;
begin
inherited
;
SaveDBGrid;
if
(Pos(
'ORDER'
, fQuery
.
SQL[fQuery
.
SQL
.
Count-
1
] ) >
0
)
then
fQuery
.
SQL
.
Delete(fQuery
.
SQL
.
Count-
1
);
query := fQuery
.
SQL
.
Text;
for
i :=
0
to
fDBGridEh
.
Columns
.
Count-
1
do
begin
column := fDBGridEh
.
Columns[i].FieldName;
if
fDBGridEh
.
Columns[i].Title
.
SortMarker = smDownEh
then
order_query := order_query + column +
' DESC , '
else
if
fDBGridEh
.
Columns[i].Title
.
SortMarker = smUpEh
then
order_query := order_query + column +
' , '
;
end
;
if
order_query <>
''
then
begin
order_query:=LeftStr(order_query,Length(order_query)-
3
);
order_query :=
'ORDER BY '
+ order_query;
end
;
with
fQuery
do
begin
Close;
SQL
.
Clear;
SQL
.
Add(query);
SQL
.
Add(order_query);
Open;
end
;
end
;