Hallo,
ich schaffe es nicht Lazreport, dazu zu bringen korrekte Zwischensummen und Gesamtsummen zu berechnen.
Ich habe ein Beispielprojekt erstellt und angehängt. Das Beispielprojekt verwendet eine Firebird Datenbank. Ich habe aber auch den komplettem SQL Code extrahiert und angehängt, daraus sollte man die Beispieldatenbank für andere RDBMS erstellen können.
Wie in diesem Beispiel ersichtlich wird für die Zwischensumme die erste Position doppelt gerechnet. Auch für die Gesamtsumme wird jeweils die erste Position der Detailtabelle doppelt gerechnet. Die Gesamtsumme Menge stimmt auch nicht.
Gibt es eine Option die dies verhindert?
Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-gtk2
Lazreport Zwischensummen und Gesamtsummen
- KoBraSoft
- Beiträge: 123
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
Lazreport Zwischensummen und Gesamtsummen
Konrad
www.KoBraSoft.de
www.KoBraSoft.de
- KoBraSoft
- Beiträge: 123
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
Re: Lazreport Zwischensummen und Gesamtsummen
Ich habe zwischenzeitlich versucht im Quellcode den Grund zu finden. Ist mit meinen bescheidenen Kenntnissen schwierig.
Ich vermute dass möglicherweise hier in LR_Class der Wurm drin ist.
Nun habe ich debugging code gefunden Soweit ich das LazLoggerwiki
Habe ich probiert, sehe aber nicht viel. Vermutlich muss ich DebugLR einschalten oder definieren. Wie geht das?
Ich vermute dass möglicherweise hier
Code: Alles auswählen
procedure DoLoop(Level: Integer);
Nun habe ich debugging code gefunden
Code: Alles auswählen
{$IFDEF DebugLR}
DebugLnEnter('Doop(Level=%d) INI b=%s mode=',[Level,bandinfo(b)]);
{$ENDIF}
verstanden habe muss ich dem main form nur die unit LazLogger hinzufügen.LazLogger
Use this unit in your main program only. Using this unit activates the functionality of LazLogger.
Heißt das dass ich das Programm von der Console starten muss und dann die Infos darin sehe?By default the output created by DebugLn is written to the stdout device
Habe ich probiert, sehe aber nicht viel. Vermutlich muss ich DebugLR einschalten oder definieren. Wie geht das?
Konrad
www.KoBraSoft.de
www.KoBraSoft.de
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- 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: Lazreport Zwischensummen und Gesamtsummen
Unter Windows reicht das Häkchen bei WinGUI weg zu machen, dann öffnet sich eine Konsole.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 726
- 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: Lazreport Zwischensummen und Gesamtsummen
Als erstes würde ich dir empfehlen für Probleme mit Datenbank Beispiele mit TBufDataSet zu erstellen, dann kann jeder dein Beispielprogram ohne weiteres erstellen.
Für Zwischen- oder Gesamtsummen brauchst du im Programm nichts zu machen, du kannst es mit dem Reportdesigner erledigen, siehe die Funktion sum von Lazreport an. Im Ordner Lazarus\components\lazreport\doc gibt es Dokumentation. Du musst die Sum-Funktion in einem Band verwenden, dann funktioniert alles automatisch. z.B. das hier ist aus einer meiner Berichten:
Memo1.Memo:='[Sum([QrOne."ANZAHL"], B1Data)]';
Memo1 ist platziert auf der Gruppen-Fußzeile (btGroupFooter), B1Data ist der Komponentenname des darüber liegenden Master-Daten-Bandes (btMasterData). Es zeigt immer die Verkaufssumme eines bestimmten Artikel an einem Tag.
Such im Internet nach "freereport sum", dann findest gute Erklärungen.
Für Zwischen- oder Gesamtsummen brauchst du im Programm nichts zu machen, du kannst es mit dem Reportdesigner erledigen, siehe die Funktion sum von Lazreport an. Im Ordner Lazarus\components\lazreport\doc gibt es Dokumentation. Du musst die Sum-Funktion in einem Band verwenden, dann funktioniert alles automatisch. z.B. das hier ist aus einer meiner Berichten:
Memo1.Memo:='[Sum([QrOne."ANZAHL"], B1Data)]';
Memo1 ist platziert auf der Gruppen-Fußzeile (btGroupFooter), B1Data ist der Komponentenname des darüber liegenden Master-Daten-Bandes (btMasterData). Es zeigt immer die Verkaufssumme eines bestimmten Artikel an einem Tag.
Such im Internet nach "freereport sum", dann findest gute Erklärungen.
- KoBraSoft
- Beiträge: 123
- Registriert: So 6. Jun 2021, 09:57
- OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
- CPU-Target: 64Bit 32 Bit
- Kontaktdaten:
Re: Lazreport Zwischensummen und Gesamtsummen
Habe ich jetzt versucht. Bin aber an Master/Detail beziehungen gescheitert. (Ich behaupte nicht dass das nicht geht, mir war nur der Aufwand das herauszufinden momentan zu hoch)Soner hat geschrieben: Sa 2. Dez 2023, 21:54 Als erstes würde ich dir empfehlen für Probleme mit Datenbank Beispiele mit TBufDataSet zu erstellen, dann kann jeder dein Beispielprogram ohne weiteres erstellen.
Das war der entscheidende Hinweis.Soner hat geschrieben: Sa 2. Dez 2023, 21:54 Im Ordner Lazarus\components\lazreport\doc gibt es Dokumentation. ...
Memo1.Memo:='[Sum([QrOne."ANZAHL"], B1Data)]';

Ich habe wirklich ernsthaft im Internet gesucht, und bin nicht fündig geworden. Fr_eng.pdf im Ordner Lazarus\components\lazreport\doc ist wirklich gut.Soner hat geschrieben: Sa 2. Dez 2023, 21:54
Such im Internet nach "freereport sum", dann findest gute Erklärungen.
Konrad
www.KoBraSoft.de
www.KoBraSoft.de