Добрый день.
Использую Delphi 7 + BDE + firebird
Обрабатывал сортировку в DBGridEh.
Перегрузил метод fDBGridEhSortMarkingChanged:
Код:
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;
Работает через раз. После запроса с order by fDBGridEh.Columns[i].FieldName - пустое. С чем это может быть связано?