Sortierung im DB-Grid mit Klick auf den Spaltennamen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Cuci
Beiträge: 52
Registriert: Do 10. Dez 2015, 20:09
OS, Lazarus, FPC: LinuxMint 18.3 Cinnamon - Win7 in VM - Lazarus 1.8.0 fpc 3.0.4
CPU-Target: 64 bit
Wohnort: Wo es warm ist

Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von Cuci »

Ich arbeite mit Linux Mint 18.3 / Lazarus 1.8.0 / MySql / ZEOS
Ich habe eine funktionierende Windows-Delphi 2010-Anwendung womit ich die Vermietung einiger Ferienhäuser manage (eher Hobby) !
Seit einigen Jahren benutze ich Linux Mint und schleppe in einer Oracle Box das Windows 7 mit um mein Programm verwenden zu können. Vor 2 Jahren hatte ich schon mal angefangen, das Programm in Lazarus zu portieren, was aber sehr schleppend vor sich ging. Jetzt will ich die Sache aber durchziehen und bitte um eure Hilfe. Ich bin nicht mehr der Jüngste, muss aber etwas Sinnvolles machen . . .

An folgendem Delphi-Code scheitert die Kompilierung: Bei 'Indexname' ist Schluss !
Wie kann ich das zum Laufen kriegen?
Dateianhänge
Spaltensortierung Code Ausschnitt.png
Spaltensortierung Code Ausschnitt.png (50.08 KiB) 2602 mal betrachtet

Sieben
Beiträge: 202
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von Sieben »

Compilermeldung 'identifier idents no menber'? Und was genau ist 'ZQy_buchen'?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von af0815 »

Schaut nach einer Query aus, vermutlich mit einer Desktopdatenbank. Dort gibt es mehrere Indexe zum aussuchen, je nach Index werden die Daten dann anders sortiert.

Das Problem ist einmal ob die aktuellen DB Komponenten in Delphi mit den aktuell verwendeten in Lazarus kompatibel sind. Ich sage mal - nein.

Eine Möglichkeit ist, das ganze in Delphi mal auf Zeos umzustellen. Oder den Code zu analysieren und umzubauen.

Nur die Informationen sind zu spärlich (Welche DB ?). Laut Fehlermeldung hat Zeos nicht die Eigenschaft IndexName und wenn, dann bezweifle ich das ein einfaches First ausreicht um die Daten umzusortieren. Man muss sich damit beschäftigen wie Zeos das gleiche machen kann.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

TraumTaenzerDieter
Beiträge: 28
Registriert: So 14. Aug 2011, 09:11

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von TraumTaenzerDieter »

Falls 'ZQy_buchen' eine Zeos-Query ist:
dort gibt es kein 'Indexname' sondern IndexFieldNames' [oder 'SortedFields'].
Für eine lokale Sortierung per TitleClick sollte 'SortedFields' das richtige sein.

Cuci
Beiträge: 52
Registriert: Do 10. Dez 2015, 20:09
OS, Lazarus, FPC: LinuxMint 18.3 Cinnamon - Win7 in VM - Lazarus 1.8.0 fpc 3.0.4
CPU-Target: 64 bit
Wohnort: Wo es warm ist

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von Cuci »

Hallo, liebe Antworter ! Ich bedanke mich für Euer Engagement . . .
. . . und der Winner ist: TraumTraenzerDieter.
Geht einwandfrei mit 'SortedFields'.
Macht Spaß, wenn mal wieder eine Hürde genommen ist.
A la prochaine !

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von gladio »

Kannst das auch über ein SQL-Statement lösen:

Code: Alles auswählen

procedure TRechWahlForm.DBGrid1TitleClick(Column: TColumn);
var Pos:LongInt;
    SQLText: String;
    aufsteigend: boolean;
begin
  aufsteigend:= true; //oder false
  if aufsteigend then
  begin
      SQLText:= '.....'
       +' ORDER BY '+Column.FieldName
       +' ASC'
  end
  else
  begin
      SQLText:= '.....'
       +' ORDER BY '+Column.FieldName
       +' DESC'
  end;
  aufsteigend:= not aufsteigend;

  begin
    Pos := ZQDatenquelleFeld_ID.AsInteger;  //aktuelle Position merken
    ZQDatenquelle.DisableControls;
    try
      ZQDatenquelle.Close;
      ZQDatenquelle.SQL.Clear;
      ZQDatenquelle.SQL.Text:= SQLText; //jetzt sortieren
      ZDatenquelle.open;
    finally
      ZQDatenquelle.EnableControls;
      ZDatenquelle.Locate('Feld_ID', Pos,[]);  //zur gemerkten Position gehen
    end;
  end;
end;
(können Schreibfehler drin sein !)

Hast du auch einen Belegungsplan realisiert?
Würde mich interessieren.
Habe auch so ein Mini-PMS programmiert. (Property Management System)

Cuci
Beiträge: 52
Registriert: Do 10. Dez 2015, 20:09
OS, Lazarus, FPC: LinuxMint 18.3 Cinnamon - Win7 in VM - Lazarus 1.8.0 fpc 3.0.4
CPU-Target: 64 bit
Wohnort: Wo es warm ist

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von Cuci »

Hallo gladio,
ja, ich habe auch einen Belegungsplan realisiert. Schau mal auf 'www.belezy.eu'. Es ist eine Kombination von Delphi-Code, Datenbank und PostScript.

Cuci
Beiträge: 52
Registriert: Do 10. Dez 2015, 20:09
OS, Lazarus, FPC: LinuxMint 18.3 Cinnamon - Win7 in VM - Lazarus 1.8.0 fpc 3.0.4
CPU-Target: 64 bit
Wohnort: Wo es warm ist

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von Cuci »

Hallo af0815,
danke für deine Antwort.

Eine Möglichkeit ist, das ganze in Delphi mal auf Zeos umzustellen. Oder den Code zu analysieren und umzubauen.

Das würde ich gerne tun. Meine Recherche im Internet hat jedoch keine Ergebnisse in dieser Hinsicht hervor gebracht, Es würde mir ja schon sehr helfen, wenn ich eine Liste der SQL-Befehle von ZEOS hätte. Gibt es sowas?

Gruß Cuci

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von af0815 »

Zeos verwendet die SQL-Befehle der darunterliegenden DB, sofern sie eine SQL-Datenbank ist. So gesehen gibt es keine eigenen SQL Befehle von ZEOS.

Wenn ich mit MariaDb arbeite, so wird der Dialekt von MariaDB verwendet (oder MySQL), Ebenso der Dialekt von MS-SQL wenn ich den verwende und so weiter.

Ausserem gibt es nicht soviele SQL-Befehle. Allerding die Möglichkeiten eines einfachen SELECT Befehls zu erfassen, kann Jahre dauern :-) Ist kein Spaß, die meisten wissen nur nicht was man man mit einem Select mit Unterselects, joins, selfjoins und unions in Kombination machen kann. Der Select Befehl selbst ist auf manchen Systemen einer eigen Programmiersprache ebenbürtig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Cuci
Beiträge: 52
Registriert: Do 10. Dez 2015, 20:09
OS, Lazarus, FPC: LinuxMint 18.3 Cinnamon - Win7 in VM - Lazarus 1.8.0 fpc 3.0.4
CPU-Target: 64 bit
Wohnort: Wo es warm ist

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von Cuci »

Hallo af0815,
jetzt sehe ich schon klarer! Also MySQL. Leider, oder Gott sei Dank, befinde ich mich in unserer Hütte in der Provence wo der SQL-Ordner nicht vorhanden ist. Aber unter SQL finde ich bestimmt was im Net. Sorry, ich bin halt kein Experte und mache alles so nebenbei. Aber ich bemühe mich, die Hilfen nicht zu sehr zu beanspruchen. Gut's Nächtle - et merci !
Cuci

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Sortierung im DB-Grid mit Klick auf den Spaltennamen

Beitrag von af0815 »

Das steht im ersten Post:
Ich arbeite mit Linux Mint 18.3 / Lazarus 1.8.0 / MySql / ZEOS
Daher meine starke Annahme es handelt sich um MySQL (oder den Fork MariaDB) 8)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten