Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.490 Beiträge
 
Delphi 7 Enterprise
 
#1

DBGrid sortieren nach Spalte und Ab- oder Aufwärts

  Alt 7. Aug 2004, 23:37
Hallo,
ich habe noch eine Ergänzung zum folgenden Eintrag in der Code-Library:
dbgrid AND sortieren AND nachdbgrid AND sortieren AND nach
---
Hi

mit diesem Code läßt sich nach mehreren Spalten gemischt auf- und absteigend sortieren. Übergeben wird ein String Array im Format ['Feldname-1 ASC|DESC, ',..,'Feldname-n ASC|DESC, ']. Z.b ['Kundenname ASC, ', 'Datum DESC, ']. Eine existierende ORDER BY wird in der letzten Zeile des SQL vermutet und aus dieser vor dem Neuerzeugen gelöscht. Bitte auf die Roten Komma mit der Leerstelle am Ende jedes Strings achten!

Delphi-Quellcode:
procedure ApplySortToQuery(AQuery: TQuery; ASortArray: array of string);
  var
    I: Integer;
    ASortString, AFilter: string;
  begin
    ASortString := '';
    for I := 0 to High(ASortArray) do
      ASortString := ASortString + ASortArray[I];
    // Achtung, die letzten zwei Zeichen werden gelöscht!
    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;
  Mit Zitat antworten Zitat