Einzelnen Beitrag anzeigen

stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#5

Re: DBGrid sortieren bei Titel-Klick

  Alt 23. Sep 2009, 07:57
Und da ich hier drauf sogar eine passende antwort habe:

Delphi-Quellcode:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
  if ADODataSet1.Active then
  begin
    ADODataSet1.Close;
  end;

  if column.title.caption = 'Nr.then
  begin
    if not SortierID then
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY ID ASC';
      SortierID := True;
    end
    else
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY ID DESC';
      SortierID := False;
    end;
  end
  else if Column.Title.Caption = 'Datumthen
  begin
    if not SortierDatum then
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Datum, Zweck, Preis ASC';
      SortierDatum := True;
    end
    else
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Datum DESC, Zweck DESC, Preis DESC';
      SortierDatum := False;
    end;
  end
  else if Column.Title.Caption = 'Betragthen
  begin
    if not SortierPreis then
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Preis ASC';
      SortierPreis := True;
    end
    else
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Preis DESC';
      SortierPreis := False;
    end;
  end
  else if Column.Title.Caption = 'Zweckthen
  begin
    if not SortierZweck then
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Zweck, Datum, Preis';
      SortierZweck := True;
    end
    else
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Zweck DESC, Datum DESC, Preis DESC';
      SortierZweck := False;
    end;
  end
  else if Column.Title.Caption = 'Kommentarthen
  begin
    if not SortierKommentar then
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Kommentar ASC';
      SortierKommentar := True;
    end
    else
    begin
      ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Kommentar DESC';
      SortierKommentar := False;
    end;
  end
  else
  begin
    ADODataSet1.CommandText := 'Select * from Finanzen';
    ADODataSet1.open;
    exit;
  end;
  ADODataSet1.open;
end;
P.S.
SortierKommentar, Sortier... das sind globale Variablen die zu beginn des Programms als False definiert wurden
Finanzen, so heißt meine Tabelle.

zwar nen bissel umständlich und aufwendig programmiert, aber dafür Anfängertauglich ^^
  Mit Zitat antworten Zitat