![]() |
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:
Aber ich kann leider den Fehler nicht finden. Vielleicht könnt ihr mir weiterhelfen?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; |
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? |
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. |
Re: DB Grid spalten sortieren
Und was steuern die Buttons? Globale Variablen sind selten ne gute Option.
|
Re: DB Grid spalten sortieren
Ein Button sieht so aus:
Delphi-Quellcode:
Sie unterscheiden sich nur durch das like"%"
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; |
Re: DB Grid spalten sortieren
Dann setzte doch nur die Abfrage bei Drücken der Buttons.
|
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. |
Re: DB Grid spalten sortieren
Warum brauchst du dann extra Buttons?
|
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? |
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. |
Re: DB Grid spalten sortieren
Keine schlechte Idee. Nur ich habe keine Ahnung wie ich das anfangen soll.
|
Re: DB Grid spalten sortieren
TForm5:
Delphi-Quellcode:
...
private sSortColumn, sOldSortColumn: String; sSortOrder: string; sAbfrage: String; ... procedure TForm5.DBGrid1TitleClick(Column: TColumn); begin sSortColumn := DBGrid1.Columns.Items[Column.Index].FieldName; if sSortColumn = sOldSortColumn then begin if sSortOrder =' DESC ' then sSortOrder = ' ASC ' else sSortOrder =' DESC '; end else sSortOrder = ' ASC '; sOldSortColumn = sSortColumn; ADOQuery1.Close; ADOQuery1.SQL.Text:= sAbfrage + ' ORDER BY ' + sSortColumn+sSortOrder; ADOQuery1.Open; end; |
Re: DB Grid spalten sortieren
Ok. Ich habe mir jetzt ein wenig Zeit gelassen.
Wie definiere ich sAbfrage? Oder besser gesagt Wo? |
Re: DB Grid spalten sortieren
Das ist die Abfrage, welche du durch die Buttons setzt.
|
Re: DB Grid spalten sortieren
Ah ok. Mit der Zeile stimmt etwas nicht:
if sSortOrder =' DESC ' then sSortOrder = ' ASC ' else sSortOrder =' DESC '; Es gibt die Meldung: ':=' erwartet, aber '=' gefunden Und die Variable Definieren muss ich so oder?
Delphi-Quellcode:
sAbfrage=('SELECT * FROM abc WHERE test like "we%"');
|
Re: DB Grid spalten sortieren
Delphi-Quellcode:
if sSortOrder =' DESC ' then sSortOrder := ' ASC ' else sSortOrder := ' DESC ';
|
Re: DB Grid spalten sortieren
Es wird gar keine Abfrage mehr gemacht. Habe ich irgend etwas vergessen?
edit: klappt jetzt alles. hatte nur etwas an der abfrage falsch. Danke für deine viele Mühe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz