Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid sortieren nach Spalte und Ab- oder Aufwärts (https://www.delphipraxis.net/27316-dbgrid-sortieren-nach-spalte-und-ab-oder-aufwaerts.html)

Union 7. Aug 2004 23:37


DBGrid sortieren nach Spalte und Ab- oder Aufwärts
 
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;

Hansa 8. Aug 2004 00:34

Re: DBGrid sortieren nach Spalte und Ab- oder Aufwärts
 
Zitat:

Zitat von Union
mit diesem Code läßt sich nach mehreren Spalten gemischt auf- und absteigend sortieren.

Könntest du das mal etwas näher erläutern ? :gruebel: Was soll das ganze ?

Union 8. Aug 2004 05:00

Re: DBGrid sortieren nach Spalte und Ab- oder Aufwärts
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von Union
mit diesem Code läßt sich nach mehreren Spalten gemischt auf- und absteigend sortieren.

Könntest du das mal etwas näher erläutern ? :gruebel: Was soll das ganze ?

In dem Library Eintrag ging es darum, nach beliebigen Feldern im Grid zu sortieren. Und da wollte ich diese Methode beisteuern, wie es auch nach mehreren Feldern geht, da sich die vorherigen Vorschläge immer nur auf ein Feld bezogen haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz