Use SQLBuilder and the Report.OnInitializeParameters or BeforeOpenDataPipelines event to modify the SQL Order By clause.
Download: SQLBuilderSimplerOrderBy.zip
Delphi Code
procedure TForm1.ppReport1InitializeParameters(Sender: TObject; var aCancel: Boolean);
var
lSQLBuilder: TdaSQLBuilder;
begin
ppReport1.DataPipeline.Close;
lSQLBuilder := TdaSQLBuilder.Create(ppReport1);
lSQLBuilder.OrderByFields.Clear;
// conditionally sort on a Customer field: Company, CustNo, or State
case RadioGroup1.ItemIndex of
0: lSQLBuilder.OrderByFields.Add('Customer','Company');
1: lSQLBuilder.OrderByFields.Add('Customer','CustNo');
2: lSQLBuilder.OrderByFields.Add('Customer','State');
end;
lSQLBuilder.Free;
end;