Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensätze im DBGrid sortieren (https://www.delphipraxis.net/120936-datensaetze-im-dbgrid-sortieren.html)

Privateer3000 19. Sep 2008 07:19

Datenbank: mdb • Zugriff über: ado

Datensätze im DBGrid sortieren
 
Hallo, mit folgender procedure will ich die Datensätze
in einem DBGrid sortieren:
Delphi-Quellcode:
procedure TForm4.bagridTitleClick(Column: TColumn);
begin
with artikel do begin
  Close; SQL.Clear;
  SQL.Text:='SELECT * FROM basisart ORDER BY :LI1 ASC';
  Prepared:=True;
  Parameters.FindParam('LI1').Value:=Column.FieldName;
  Open;
end;
end;
nach einem Click passiert auch was, allerdings ist nicht
ersichtlich was er sortiert hat. Jedenfalls nicht das
auf das ich geklickt habe.
Nach einem 2. klick passiert garnichts mehr...
Ist irgendwas falsch am Code, oder muss an der Kompo
noch eine Eigenschaft eingestellt werden?

Grüße

joachimd 19. Sep 2008 08:04

Re: Datensätze im DBGrid sortieren
 
Parameter dürfen nur Werte ersetzen, keine Spaltennamen. Baue es so um:
Delphi-Quellcode:
procedure TForm4.bagridTitleClick(Column: TColumn);
begin
with artikel do begin
  Close;
//  SQL.Clear; //unnötig, da eh der Text neu gesetzt wird!!!
  SQL.Text:='SELECT * FROM basisart ORDER BY ['+Column.FieldName+'] ASC';
  Open;
end;
end;

Privateer3000 19. Sep 2008 08:16

Re: Datensätze im DBGrid sortieren
 
Perfekt! Danke !!!

joachimd 19. Sep 2008 11:16

Re: Datensätze im DBGrid sortieren
 
mir ist da noch was eingefallen;)
Falls der Benutzer trotz Umsortierung auf demselben Datensatz bleiben will/soll, dann solltest Du zuvor den PK einlesen und nach der Abfrage wieder darauf ein Locate machen.

alzaimar 19. Sep 2008 11:51

Re: Datensätze im DBGrid sortieren
 
Schon mal TADOTable und die Eigenschaft 'IndexFieldNames' probiert?

oder eine TADOQuery, einen TProvider und ein TClientDataset, das kann auch sortieren.

Vorteil: Man belastet das DBMS nicht.

Privateer3000 22. Sep 2008 06:23

Re: Datensätze im DBGrid sortieren
 
Zitat:

Zitat von joachimd
mir ist da noch was eingefallen;)
Falls der Benutzer trotz Umsortierung auf demselben Datensatz bleiben will/soll, dann solltest Du zuvor den PK einlesen und nach der Abfrage wieder darauf ein Locate machen.

Danke für den Tipp,
ich nehme an du meinst den private key?!
Wie muss man dies machen, in den Speicher einlesen,
also in eine variable packen?

joachimd 22. Sep 2008 08:13

Re: Datensätze im DBGrid sortieren
 
eigentlich den PRIMARY KEY.
Je nach Datentyp in etwa so:
Delphi-Quellcode:
var
  id: integer;
begin
  //...
  id:=query.fieldbyname('id').asinteger;
  query.DisableControls;
  query.close;
  query.sql.text:= ...
  query.open;
  query.locate('id',id,[]);
  query.EnableControls;
  //...
end;

Privateer3000 23. Sep 2008 06:00

Re: Datensätze im DBGrid sortieren
 
Alles klar, vielen Dank!


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