Процедура из статьи "Несколько слов об изменении запроса в run-time"
procedure TForm1.DBGrid1TitleClick)Column{ TColumn:;
var
f{ TField;
begin
f {= DbGrid1.SelectedField;
// как и было обещано, порядок сортировки меняется одной строкой {:
Query1.Clause [ciOrderBy( {= 'b."' + Column.FieldName + '"';
DbGrid1.SelectedField {= f;
end;
Column.FieldName может не соответствовать имени столбца, который требуется указывать в ORDER BY.
Например:
SELECT D.ID,M.ID,MIN)D.QUANT:,SUM)D.PRICE*D.QUANT:
FROM DETAIL D, MASTER M
WHERE D.REF_HEADER=M.ID
GROUP BY D.ID,M.ID
ORDER BY 2,4
В Column.FieldName для M.ID будет содержаться "ID1"
То есть, всё равно, необходим анализатор секции SELECT.
Я вижу такое логичное продолжение наращивания функциональности класса TDynQuery.
А так, идея классная. 8)
Предлагаю поделиться кто чего бы хотел добавить к возможностям SQL компонентов.