Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DB Grid spalten sortieren (https://www.delphipraxis.net/101293-db-grid-spalten-sortieren.html)

Jack23 10. Okt 2007 20:34

Datenbank: Access • Zugriff über: ADO

DB Grid spalten sortieren
 
Hallo

Ich möchte in einem DBGrid spalten sortieren.

Dazu verwende ich folgenden Code:

Delphi-Quellcode:

var
  bSortOrder: Boolean;
  btn_Caption: string;



procedure TForm5.Alle(Sender: TObject);
var
  btn_Caption: string;
  begin
  btn_Caption := (Sender as TButton).Caption;
 end;

procedure TForm5.DBGrid1TitleClick(Column: TColumn);
var
  sSortColumn: String;
begin
    sSortColumn := DBGrid1.Columns.Items[Column.Index].FieldName;
    ADOQuery1.Close;
    if bSortOrder then
    if btn_Caption = 'Test1' then
  begin
      ADOQuery1.SQL.Text:= 'SELECT * FROM abc WHERE test like ' + QuotedStr(btn_Caption + '%') + ' ORDER BY ' + sSortColumn;
  end
  else
  begin
     ADOQuery1.SQL.Text:= 'SELECT * FROM abc WHERE test like '+ QuotedStr(btn_Caption + '%') + ' ORDER BY ' + sSortColumn + ' DESC';
  end;
  ADOQuery1.Open;
  bSortOrder := not bSortOrder;
end;
Aber ich kann leider den Fehler nicht finden. Vielleicht könnt ihr mir weiterhelfen?

mkinzler 10. Okt 2007 20:42

Re: DB Grid spalten sortieren
 
Da btn_Caption eine lokale Variable ist, bringt der Code so nicht.
In der 2. Methode ist sie zudem unbekannt.
Warum brauchst du für die Sortierungsrichtung einen eigenen Button und machst das nicht als Umkehrung bei weiterem Klick?

Jack23 10. Okt 2007 20:55

Re: DB Grid spalten sortieren
 
Wie mache ich die Variable Global?

Ich habe 10 Buttons mit unterschiedlichen werten. Also ein Button holt mehrere Daten aus der DB. Und für jeden Button brauche ich dann so etwas.

mkinzler 10. Okt 2007 20:57

Re: DB Grid spalten sortieren
 
Und was steuern die Buttons? Globale Variablen sind selten ne gute Option.

Jack23 10. Okt 2007 20:59

Re: DB Grid spalten sortieren
 
Ein Button sieht so aus:

Delphi-Quellcode:
procedure TForm5.Test(Sender: TObject);
begin
 ADOQuery1.Active:=false;
 ADOQuery1.Sql.Clear;
 ADOQuery1.Sql.Add('SELECT * FROM abc WHERE test like "we%" ORDER BY test asc ');
 ADOQuery1.Active:=true;
end;
Sie unterscheiden sich nur durch das like"%"

mkinzler 10. Okt 2007 21:06

Re: DB Grid spalten sortieren
 
Dann setzte doch nur die Abfrage bei Drücken der Buttons.

Jack23 10. Okt 2007 21:15

Re: DB Grid spalten sortieren
 
Ich versteh nicht ganz.

Aber ich möchte doch sortieren nach drücken des Button im DB Grid.

Wenn ich da dann in die Spalte klicke.

mkinzler 10. Okt 2007 21:16

Re: DB Grid spalten sortieren
 
Warum brauchst du dann extra Buttons?

Jack23 10. Okt 2007 21:18

Re: DB Grid spalten sortieren
 
Über einen Button rufe ich etwas aus der Datenbank. Und dann soll es hinterher im DBGrid durch klicken auf die einzelnen spalten sortiert werden.


Und da ich immer verschiedene Datensätze aus der DB hole deswegen die ganzen Button. Muss es doch so laufen oder?

mkinzler 10. Okt 2007 21:23

Re: DB Grid spalten sortieren
 
Ich würde dann in privaten Membern die zuletzt sortierte Spalte und Richtung ablegen.
Beim Klick auf die Buttons dann die Abfrage Ändern.
Keinesfalls würde ich die beiden Vorgänge, die unabhängig voneinander sind, zu einem machen zu wollen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.
Seite 1 von 2  1 2      

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