Soweit ich weiss und bisher auch zu meinem Leidwesen verifizieren konnte, sind Parameter nur in WHERE und JOIN zulässig. By ORDER, GROUP usw. musst Du leider weiter mit String-Zusammensetzungen arbeiten. Du kannst Dir aber z.B. so einer Hilfsprocedur verwenden. Nachteil: Der Gesamte Originale ORDER BY muss in nur einer, und zwar der letzten Zeile (laut
SQL Syntax) stehen.
Delphi-Quellcode:
procedure ApplySortToQuery(AQuery: TADSQuery; ASortArray: array of string);
var
I: Integer;
ASortString, AFilter: string;
begin
ASortString := '';
for I := 0 to High(ASortArray) do
ASortString := ASortString + ASortArray[I];
System.Delete(ASortString, Length(ASortString)-1, 2);
AFilter := AQuery.Filter;
try
AQuery.DisableControls;
AQuery.Close;
AQuery.Filter := '';
if pos('order by', AQuery.SQL.Strings[AQuery.SQL.Count-1]) > 0 then
AQuery.SQL.Delete(AQuery.SQL.Count-1);
if ASortString <> '' then ASortString := 'order by ' + ASortString;
AQuery.SQL.Add(ASortString);
finally
AQuery.Open;
AQuery.Filter := AFilter;
AQuery.EnableControls;
end;
end;