Hallo zusammen,
ich verwende in meinem Programm eine SQLite Datenbank.
Die User möchten nun das Sie über den Klick auf den Titel einer Spalte die Datenmenge nach dieser Spalte Sortieren, so wie es halt auch fast jedes Programm macht.
Ich hab das bisher noch nie umsetzen müssen und hab bisl im Internet darüber gesucht.
Hab ich das richtig interpretiert das man die Datenmenge im DBGrid nicht sortieren kann, sondern das man den
SQL Befehl erneut mit der Order By Klausel absetzen muss?
Mein Lösungsansatz (der auch funktioniert) sieht bisher wie folgt aus:
Delphi-Quellcode:
//Get Sort Column Number and Name
If Column.
Index = giSortColumn
Then
Begin
If gsSortOrder = '
ASC'
Then gsSortOrder := '
DESC'
Else gsSortOrder := '
ASC';
End Else
Begin
gsSortOrder := '
ASC';
End;
giSortColumn := Column.
Index;
sFieldName := Column.FieldName;
//Sort
Try
With (sqlitefile_query1)
Do
Begin
Active := False;
datsrc_test.DataSet :=
Nil;
SQL.Clear;
SQL.Add('
Select * From DATCOM');
SQL.Add('
Order By ' + sFieldName + '
' + gsSortOrder);
datsrc_test.DataSet := sqlitefile_query1;
Active := True;
End;
Except
On E:
Exception Do
Begin
MessageDlg(E.
Message, mtError, [mbOK], 0);
Exit;
End;
End;
//Show Sort Column
dbgrid_test.Columns[giSortColumn].Title.Font.Style := dbgrid_test.Columns[giSortColumn].Title.Font.Style + [fsBold];
giSortColumn und gsSortOrder sind Globale Variablen in denen ich mir den letzten Sortier Stand merke.