![]() |
Quickreport - Wie Summary je Seite als Zwischensumme?
Hi allerseits,
Delphi4, Quickreport 3. Wie kann ich in Quickreport eine Summary je Seite als Zwischensumme und nicht erst am Ende nach allen Details erstellen? Ich kenne das PageFooter. Sehe aber nicht wie ich je Seite eine Zwischensumme dort einfügen kann. Weiß jemand Rat? Gruß PASST |
Re: Quickreport - Wie Summary je Seite als Zwischensumme?
Hi,
kannst Du bitte die Frage präzisieren, wo ist das Problem ? Für die Ausgabe der Zwischensumme (Seitensumme) würde ich auch den Pagefooter nehmen. Einfach während die Positionen gedruckt werden die Seitensumme ermitteln und mit einem Label auf dem PageFooter ausgeben. Grüße Frank |
Re: Quickreport - Wie Summary je Seite als Zwischensumme?
Wie kann ich denn die Zwischensumme einer Seite ermitteln?
Kann QReport das nicht selber? Dh. Werte bestimmter eines Feldes des Detailbands summieren und je Seite als Zwischensumme ausgeben? Wie kann ich ermitteln, welche Details/Records auf einer Reportseite dargestellt werden und somit in der Zwischensumme auftauchen müssen? |
Re: Quickreport - Wie Summary je Seite als Zwischensumme?
Hi PASST,
Sourcemaker hat Recht. Das geht nur manuell. Füge im Seitenfuss und im Berichtsfuss ein paar QRLabel ein
Delphi-Quellcode:
mfgimplementation {$R *.dfm} var seite, zNr: Integer; Summe, Gesamt: double; procedure TForm2.QRBeforePrint( Sender: TCustomQuickRep; var PrintReport: Boolean); begin seite := 0; Gesamt := 0; end; procedure TForm2.PageHeaderBand1BeforePrint( Sender: TQRCustomBand; var PrintBand: Boolean); begin inc(seite); zNr := 0; summe := 0; end; procedure TForm2.PageFooterBand1BeforePrint( Sender: TQRCustomBand; var PrintBand: Boolean); begin QRSumme.Caption := Format['%8.2f', [summe]); QRSeite.Caption := '- ' + IntToStr(Seite) + ' -'; end; procedure TForm2.DetailBand1BeforePrint( Sender: TQRCustomBand; var PrintBand: Boolean); begin Summe := Summe + Table['Wert']; Gesamt := Gesamt + Table['Wert']; inc(zNr); QRzNr.Caption := Format['%.3d', [zNr]); end; procedure TForm2.SummaryBand1BeforePrint( Sender: TQRCustomBand; var PrintBand: Boolean); begin QRGesamt.Caption := Format['%8.2f', [Gesamt]); end; BrunoT |
Re: Quickreport - Wie Summary je Seite als Zwischensumme?
Hallo BrunoT,
vielen Dank für deinen Codeschnipsel. Das schaut ja wirklich puppi-einfach aus :-D Danke nochmals, PASST |
Re: Quickreport - Wie Summary je Seite als Zwischensumme?
Hi,
so jetzt komme ich mal wieder dazu, mit dem Problem zu beschäftigen. Tatsächlich ist dein Beispiel wunderbar einfach. Allerdings funktioniert es bei mir nicht! Ich habe Aufträge verschiedener Kunden und ihre Auftragspositionen per Master-Detail definiert. Die einzelnen Aufträge inkl. Positionen werden auch brav auf neuen Seiten angezeigt. Jedoch druckt der QReport die Zwischensumme alle mit Null. Ausschließlich die aller letzte Seite enthält den korrekten Wert. Ich poste meinen Code hier mal.
Delphi-Quellcode:
procedure TFPacklisten.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean); begin einh_blatt := 0; einh_total := 0; kund_nr := 0; packlinr := 0; end; procedure TFPacklisten.QRSubDetail1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin einh_blatt := einh_blatt + FMain.memPackli.fieldbyname('mengelief').asinteger; einh_total := einh_total + FMain.memPackli.fieldbyname('mengelief').asinteger; end; procedure TFPacklisten.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin if not ((kund_nr = FMain.memPkop.fieldbyname('kund_nr').asinteger) and (packlinr = FMain.memPkop.fieldbyname('packlinr').asinteger)) then begin einh_blatt := 0; einh_total := 0; kund_nr := FMain.memPkop.fieldbyname('kund_nr').asinteger; packlinr := FMain.memPkop.fieldbyname('packlinr').asinteger; end; end; procedure TFPacklisten.PageFooterBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin QRLabelEinh_Blatt.caption := 'Einh./Blatt: ' + inttostr(einh_blatt); QRLabelTotal.caption := 'Total: ' + inttostr(einh_total); end; |
Re: Quickreport - Wie Summary je Seite als Zwischensumme?
Moin,
ich sehe das die Unit-Globalen-Variablen initalisiert werden. Bei jeder Ausgabezeile werden sie mit dem Ausgabewert erhöht. Sie werden auch wieder zurückgesetzt. Aber wo werden sie ausgegeben. Bin ich blind? Und genau nach dieser (nicht vorhandenen) Ausgabe, können bzw. müssen sie doch auch wieder zurückgesetzt werden. Und dann habe ich da noch was anderes. Was ist FMain? Da sehe ich doch irgendwie einen Zirkelschluss (Main-Unit bindet Report-Unit ein und andersherum) -> autsch! Unsauberer geht es nicht. sorry, aber das musste raus. Nachdenkliche Grüsse... Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz