Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Grid über DataSet sortieren (https://www.delphipraxis.net/78040-grid-ueber-dataset-sortieren.html)

hirnstroem 28. Sep 2006 07:30

Datenbank: MS Access • Version: kA • Zugriff über: ADO

Grid über DataSet sortieren
 
'loha Folks,

mit der folgenden Prozedur lasse ich mir ein DBGrid sortieren:

Delphi-Quellcode:
procedure TIWUSerSession.UserManagementSortBy(const AFieldname: string);
var
  ID: Integer;
begin
  ID := Trunc(ADODataSet_AccessUserUserID.Value);
  with ADODataSet_AccessUser do
  begin
    Close;
    try
      IndexFieldNames := AFieldname;
    finally
      Open;
    end;
  end;
end;
Dies funktioniert ganz gut, aber leider nur in eine Richtung (aufsteigend). Nun wollte ich einmal nachfragen, wie ich diese Prozedur dazu bringe nur noch absteigend zu sortieren, um letztenendes auf- und absteigend sortieren zu können. Und wenn mir jemand sagt das geht nicht, mach ich es halt über eine SQL Abfrage.

thx und Grüsse
hirnstroem

Peinhard 28. Sep 2006 08:44

Re: Grid über DataSet sortieren
 
Das geht über die ADO-Eigenschaft Sort viel bequemer und flexibler:

Delphi-Quellcode:
procedure TIWUSerSession.UserManagementSortBy(const AFieldname: string);
begin
  with ADODataSet_AccessUser do
  begin
    //Close; //kann bzw muß sogar offen bleiben
    Sort := AFieldname+'ASC'; // +'DESC';
  end;
end;
Siehe dazu auch hier

hirnstroem 28. Sep 2006 09:02

Re: Grid über DataSet sortieren
 
Wow, das sieht sehr vernünftig aus dieses Sort.

Vielen Dank

Grüsse
hirnstroem

[Edit]

So sieht die Sache nun aus:

Delphi-Quellcode:
procedure TIWUSerSession.SortBy(Sender: TADODataSet; const AFieldname: string);
begin
  if Sender.Sort = AFieldname + ' ASC' then
  begin
    Sender.Sort := AFieldname + ' DESC';
  end
  else if Sender.Sort = AFieldname + 'DESC' then
  begin
    Sender.Sort := AFieldname + ' ASC';
  end
  else
  begin
    Sender.Sort := AFieldname + ' ASC';
  end;
  Sender.Open;
end;
Kann für jedes DataSet wiederverwendet werden und sortiert sortierte Daten immer anderst herum oder unsortiertes aufsteigend und danach abwechselnd bei jedem Klick.

Else 21. Nov 2006 08:26

Re: Grid über DataSet sortieren
 
Hallo,

wie kann ich genau dieses Problem über ein SimpleDataSet lösen? Dort gibt es diese Funktionalität wie beim ADO nicht.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 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