TDBGrid daten werden mehrfach angezeigt
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TDBGrid daten werden mehrfach angezeigt
Jetzt habe ich gelesen, dass die Procedure OnCalcFields mit einigen wenigen Datenbanken wohl Probleme hat. Möglicherweise auch mit Firebird 2.5. Weiß Jemand, welche Möglichkeit besteht die fortlaufende Nummerierung der Datensätze in ein TDBGrid einzutragen. Mit einer while-Schleife?
Gruß, Luckner
Gruß, Luckner
-
- Lazarusforum e. V.
- Beiträge: 280
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: TDBGrid daten werden mehrfach angezeigt
Wenn du das Projekt eh gerade umstellst...
Was hindert dich, eine aktuelle Firebird-Version (4.03) zu testen?
Das letzte Release von Firebird 2.5 scheint über 4 Jahre auf dem Buckel zu haben. => Final release: v2.5.9 (End of Series) June 24, 2019
Was hindert dich, eine aktuelle Firebird-Version (4.03) zu testen?
Das letzte Release von Firebird 2.5 scheint über 4 Jahre auf dem Buckel zu haben. => Final release: v2.5.9 (End of Series) June 24, 2019
just my two Beer
-
- Beiträge: 724
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: TDBGrid daten werden mehrfach angezeigt
Ich verwende auch immer noch FB 2.5, ich glaube es hat einen Bug manchmal zeigt es Einträge doppelt an obwohl es eindeutig ist. Das ist extrem selten meistens ist die SQL-Anweisung fehlerhaft.
Ich füge bei so einem Fall als erstes "distinct" nach der Select-Anweisung. Wenn das nicht hilft baue ich SQL um bis es nicht mehr doppelt angezeigt wird.
Versuche OnCalcFields zu meiden, sie werden bei jedem Scrollen neu berechnet. Ich mache dafür so etwas:
Dann ändere ich den Wert von ONCALCFIELDXY wenn es benötigt wird. Dein Query muss natürlich CachedUpdates unterstützen.
Man muss natürlich beim Feld "ONCALCFIELDXY" die TField.ProviderFlags anpassen, damit es nicht als Änderung des Datensatzes angesehen wird oder gleich TField.Fildkind zu fkInternalCalc ändern.
fkInternalCalc wird von SQLDB ignoriert(Stand ca 2018) ZEOS unterstützt es.
Was programmierst du Sportstatistik-Programm?
Ich hatte auch so etwas mit Delphi programmiert. Ich wollte es auch zu Lazarus konvertieren, aber hatte nie Zeit dazu.
Ich füge bei so einem Fall als erstes "distinct" nach der Select-Anweisung. Wenn das nicht hilft baue ich SQL um bis es nicht mehr doppelt angezeigt wird.
Versuche OnCalcFields zu meiden, sie werden bei jedem Scrollen neu berechnet. Ich mache dafür so etwas:
Code: Alles auswählen
SELECT *, 0 AS ONCALCFIELDXY FROM TABLE X WHERE ...
Man muss natürlich beim Feld "ONCALCFIELDXY" die TField.ProviderFlags anpassen, damit es nicht als Änderung des Datensatzes angesehen wird oder gleich TField.Fildkind zu fkInternalCalc ändern.
fkInternalCalc wird von SQLDB ignoriert(Stand ca 2018) ZEOS unterstützt es.
Was programmierst du Sportstatistik-Programm?
Ich hatte auch so etwas mit Delphi programmiert. Ich wollte es auch zu Lazarus konvertieren, aber hatte nie Zeit dazu.
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TDBGrid daten werden mehrfach angezeigt
Hallo Soner,
ich werde mal FB 4.03 ausprobieren. Mal Schauen, welche Probleme ich dort bekomme. Was mich jedoch stutzig macht, dass ich das Problem im April hatte und irgendwie gelöst hatte. Leider ohne Dokumentation. Echt blöd von mir. Meine laufenden Anwendungn, die ich für unsere Fa. programmiert hatte, laufen gut mit FB 1.5.. . Auch dort ohne Probleme. Jetzt fällt mir ein, ich könnte einen Test mit der FB 1.5.. machen. Da ich nur standart SQL benutze, dürfte es funktionieren.
Diese Anwendung ist für mein Tischtennis-Verein und ist eine Hilfe für die Mannschaftsaufstellung. Existiert schon seit einigen Jahren und ist mit Delphi programmiert. Jetzt wollte ich, mit einigen Verbesserungen nach Lazarus portieren.
Gruß, Luckner
ich werde mal FB 4.03 ausprobieren. Mal Schauen, welche Probleme ich dort bekomme. Was mich jedoch stutzig macht, dass ich das Problem im April hatte und irgendwie gelöst hatte. Leider ohne Dokumentation. Echt blöd von mir. Meine laufenden Anwendungn, die ich für unsere Fa. programmiert hatte, laufen gut mit FB 1.5.. . Auch dort ohne Probleme. Jetzt fällt mir ein, ich könnte einen Test mit der FB 1.5.. machen. Da ich nur standart SQL benutze, dürfte es funktionieren.
Diese Anwendung ist für mein Tischtennis-Verein und ist eine Hilfe für die Mannschaftsaufstellung. Existiert schon seit einigen Jahren und ist mit Delphi programmiert. Jetzt wollte ich, mit einigen Verbesserungen nach Lazarus portieren.
Gruß, Luckner
-
- Beiträge: 1058
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: TDBGrid daten werden mehrfach angezeigt
Liest du auch was ich schreibe? Ich habe dir hier schon zwei Möglichkeiten gelinked um das DB-Seitig zu lösen. Obwohl du noch immer nicht explizit gesagt hast ob du tartsächlich eine Durchnumerierung der Zeilen erreichen willst.Luckner hat geschrieben: So 15. Okt 2023, 18:18 Werde jetzt mal rumschauen, ob Firebird da eine Möglichkeit bietet.
Im gleichen Post habe ich dir beschrieben wie du SQL-Statements monitierst die an die DB geschickt werden. Hast du das gegenständliche Statement schon mal von außerhalb des Lazarus-Programmes gegen die DB getestet um zu ermitteln ob das Problem nicht auch in der DB liegen könnte ?
Teste doch einfach mal SQLite, das sollte für den Verein allemal reichen und braucht bloß die richtige DLL um zu funktionieren.Luckner hat geschrieben: Mo 16. Okt 2023, 09:35 Jetzt fällt mir ein, ich könnte einen Test mit der FB 1.5.. machen. Da ich nur standart SQL benutze, dürfte es funktionieren.
Diese Anwendung ist für mein Tischtennis-Verein und ist eine Hilfe für die Mannschaftsaufstellung
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TDBGrid daten werden mehrfach angezeigt
hallo charlytango,
ich lese was Du schreibst. Diese kleine Anwendung für meinen Verein, ist auch ein Test der Möglichkeit, die anderen Programme, die ich unter Delphi geschrieben habe, ebenfalls unter Lazarus zu konvertieren und da weiter zu machen. Deshalb Firebird weiter als Server. Desgleichen überlege ich, wenn ich hier die post's lese, wie groß der Aufwand bei den anderen Programmen wäre. Für mich sind, bei dem gesamten Aufwand den ich dann betreiben muß, die simplen Wege interessanter. Hier überlege ich, welche Probleme erwarten mich noch, wenn schon die gewöhnlichen Routinen nicht funktionieren.
Ah ja, es soll nur eine einfache Durchnummerierung der Zeilen in DBGrid sein.
Gruß, Luckner
ich lese was Du schreibst. Diese kleine Anwendung für meinen Verein, ist auch ein Test der Möglichkeit, die anderen Programme, die ich unter Delphi geschrieben habe, ebenfalls unter Lazarus zu konvertieren und da weiter zu machen. Deshalb Firebird weiter als Server. Desgleichen überlege ich, wenn ich hier die post's lese, wie groß der Aufwand bei den anderen Programmen wäre. Für mich sind, bei dem gesamten Aufwand den ich dann betreiben muß, die simplen Wege interessanter. Hier überlege ich, welche Probleme erwarten mich noch, wenn schon die gewöhnlichen Routinen nicht funktionieren.
Ah ja, es soll nur eine einfache Durchnummerierung der Zeilen in DBGrid sein.
Gruß, Luckner
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TDBGrid daten werden mehrfach angezeigt
Hallo,
habe gerade die FB 4.03 installiert und die alte Datenbank in diese eingespielt und das Ergebnis ist, dass der Fehler identisch ist. An der FB Version kann es dann nicht mehr liegen, weil unter Delphi funktioniert es auch mit FB 2.5.
Gruß, Luckner
habe gerade die FB 4.03 installiert und die alte Datenbank in diese eingespielt und das Ergebnis ist, dass der Fehler identisch ist. An der FB Version kann es dann nicht mehr liegen, weil unter Delphi funktioniert es auch mit FB 2.5.

Gruß, Luckner
- gladio
- Beiträge: 223
- Registriert: Sa 21. Jun 2014, 06:15
- OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: TDBGrid daten werden mehrfach angezeigt
Werden denn die Datensätze so angezeigt, wie sie sollen, wenn du den Firlefanz mit der Nummerierung über OnCalcField weg lässt?
Im Normalfall macht ein DBGrid genau das, was es soll. Meine Erfahrung.
Es werden die Datensätze angezeigt, die in der Datenquelle bereit gestellt werden.
Im Normalfall macht ein DBGrid genau das, was es soll. Meine Erfahrung.
Es werden die Datensätze angezeigt, die in der Datenquelle bereit gestellt werden.
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TDBGrid daten werden mehrfach angezeigt
Hallo gladio,
wenn ich den Firlefanz mit der Nummerierung über OnCalcField weg lasse, dann sieht der Inhalt von dem Grid korrekt aus.
gruß, Luckner
wenn ich den Firlefanz mit der Nummerierung über OnCalcField weg lasse, dann sieht der Inhalt von dem Grid korrekt aus.
gruß, Luckner
-
- Lazarusforum e. V.
- Beiträge: 280
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: TDBGrid daten werden mehrfach angezeigt
Also, noch mal von ganz vorne:
du hast eine Tabelle und rufst die Felder ab mit
Danach gehst du hin und weist einem Feld deines Grid
die RecordNumber zu...
Was ist der Sinn des ganzen? Möchtest du da eine (theoretische) Reihenfolge nach dem Namen einbringen, oder nur einen Zähler?
Wenn du das ganze selber Firlefanz nennst, kannst du es auch weglassen.
du hast eine Tabelle und rufst die Felder ab mit
Code: Alles auswählen
DataModuleTT.ZQueryMannschaftGrid.SQL.Add('select ID, NAME FROM MANNSCHAFT ORDER BY NAME');
Code: Alles auswählen
ZQueryMannschaftGrid.FieldValues['NR'] := ZQueryMannschaftGrid.RecNo;
Was ist der Sinn des ganzen? Möchtest du da eine (theoretische) Reihenfolge nach dem Namen einbringen, oder nur einen Zähler?
Wenn du das ganze selber Firlefanz nennst, kannst du es auch weglassen.
just my two Beer
-
- Beiträge: 1058
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: TDBGrid daten werden mehrfach angezeigt
Der Aufwand ist deswegen so groß weil du nur Teilinformationen gibst und auf Fragen nicht antwortest.Luckner hat geschrieben: Mo 16. Okt 2023, 13:35 wie groß der Aufwand bei den anderen Programmen wäre
Der Empfehlung ein Beispielprojekt zu zeigen bist du auch nicht nachgekommen (Wenn dann mit SQLite, denn nicht jeder will sich FB auf den Rechner holen)
Was bitte ist simpler als das SQL Statement anzupassen, zumal FB die gesuchte Funktionalität ja anbietet?
Code: Alles auswählen
select
id,
salary,
row_number() over (order by salary),
from employee
order by salary;