Lazreport Zwischensummen und Gesamtsummen

Rund um die LCL und andere Komponenten
Antworten
KoBraSoft
Beiträge: 57
Registriert: So 6. Jun 2021, 09:57
OS, Lazarus, FPC: Winux (L 2.2.4 FPC 3.2.2)
CPU-Target: 64Bit 32 Bit
Kontaktdaten:

Lazreport Zwischensummen und Gesamtsummen

Beitrag von KoBraSoft »

Hallo,
ich schaffe es nicht Lazreport, dazu zu bringen korrekte Zwischensummen und Gesamtsummen zu berechnen.
Ich habe ein Beispielprojekt erstellt und angehängt.
published.zip
(148.99 KiB) 75-mal heruntergeladen
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.
lazrep.png
lazrep.png (50.63 KiB) 4432 mal betrachtet
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
Konrad

www.KoBraSoft.de

KoBraSoft
Beiträge: 57
Registriert: So 6. Jun 2021, 09:57
OS, Lazarus, FPC: Winux (L 2.2.4 FPC 3.2.2)
CPU-Target: 64Bit 32 Bit
Kontaktdaten:

Re: Lazreport Zwischensummen und Gesamtsummen

Beitrag von KoBraSoft »

Ich habe zwischenzeitlich versucht im Quellcode den Grund zu finden. Ist mit meinen bescheidenen Kenntnissen schwierig.
Ich vermute dass möglicherweise hier

Code: Alles auswählen

 procedure DoLoop(Level: Integer); 
in LR_Class der Wurm drin ist.
Nun habe ich debugging code gefunden

Code: Alles auswählen

    {$IFDEF DebugLR}
    DebugLnEnter('Doop(Level=%d) INI b=%s mode=',[Level,bandinfo(b)]);
    {$ENDIF}   
Soweit ich das LazLoggerwiki
LazLogger
Use this unit in your main program only. Using this unit activates the functionality of LazLogger.
verstanden habe muss ich dem main form nur die unit LazLogger hinzufügen.
By default the output created by DebugLn is written to the stdout device
Heißt das dass ich das Programm von der Console starten muss und dann die Infos darin sehe?
Habe ich probiert, sehe aber nicht viel. Vermutlich muss ich DebugLR einschalten oder definieren. Wie geht das?
Konrad

www.KoBraSoft.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
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

Beitrag von af0815 »

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).

Soner
Beiträge: 624
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

Beitrag von Soner »

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.

KoBraSoft
Beiträge: 57
Registriert: So 6. Jun 2021, 09:57
OS, Lazarus, FPC: Winux (L 2.2.4 FPC 3.2.2)
CPU-Target: 64Bit 32 Bit
Kontaktdaten:

Re: Lazreport Zwischensummen und Gesamtsummen

Beitrag von KoBraSoft »

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.
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
Im Ordner Lazarus\components\lazreport\doc gibt es Dokumentation. ...
Memo1.Memo:='[Sum([QrOne."ANZAHL"], B1Data)]';
Das war der entscheidende Hinweis. :!: Ich wusste bisher nicht, dass man der Funktion Sum mehr als einen Parameter übergeben kann (genauer muss, damit es richtig funktioniert)
Soner hat geschrieben:
Sa 2. Dez 2023, 21:54

Such im Internet nach "freereport sum", dann findest gute Erklärungen.
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.
Konrad

www.KoBraSoft.de

Antworten