Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Summenbildung im QuickReport? (https://www.delphipraxis.net/62658-summenbildung-im-quickreport.html)

mlspider 7. Feb 2006 18:59

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

Summenbildung im QuickReport?
 
Hallo,

nach einer Abrage, die in einem DBGrid angezeigt werden:

SQL-Code:
Memo1.Text:='SELECT r.nr, r.kundennr, r.datum, r.sdat, r.bemerkung, r.gesamtnetto, r.kostenart, k.name FROM kunden k, rechnungen r WHERE (rechnungen.kundennr=kunden.nr) AND (kunden.name='+''''+Edit1.Text+''''+') AND datum BETWEEN '+''''+DateToStr(DateTimePicker1.Date)+''''+' AND '+''''+DateToStr(DateTimePicker2.Date)+''''+'ORDER BY datum';
übergebe ich die Daten an einem QuickReport. Alle Daten, einschließlich dem Gesamt-Nettobetrag einer jeweiligen Rechnung wird korrekt im DetailBand dargestellt. Wie kann ich nun vielmehr QuickReport dazu veranlassen, im SummaryBand die Summe aller Nettobeträge anzuzeigen?

Jelly 7. Feb 2006 19:10

Re: Summenbildung im QuickReport?
 
Du könntest im AfterScroll Event deines TDataset Abköömlings die Summe bilden:

Delphi-Quellcode:
Gesamt := Gesamt + Dataset.FieldByName('Gesamtnetto').AsFloat ;
Im OnBeforePrint Ereignis deines Summarybands kannst Du dann ein Label mit deinem Wert befüllen.

Aber kann Quickreport wirklich nicht von Haus aus Summen bilden :gruebel: Ist schon ne Weile her, und ich hab Quickreport zur Zeit gar nicht zur Hand.

mlspider 7. Feb 2006 19:14

Re: Summenbildung im QuickReport?
 
Ich habe jetzt alle Varianten im QR durch. Im SummaryBand finde ich keine passende Eigenschaft zur Summenbildung.

(Was für ein Typ soll "Gesamt" sein? Jedenfalls nicht Integer)

omata 7. Feb 2006 22:06

Re: Summenbildung im QuickReport?
 
Hallo mlspider,

dafür ist die TQRExpr-Komponente da. Wähle mal im Objektinspektor Expression aus. Dann geht ein Fenster auf, indem dir die möglichen Funktionen aufgelistet werden und du deinen Ausdruck zusammenbauen kannst. Also mit SUM(Query.Datenbankfeld) bekommst du dann die Summe.

MfG
Thorsten

mlspider 7. Feb 2006 22:23

Re: Summenbildung im QuickReport?
 
Werde es probieren. Danke.

gogl1985 30. Aug 2007 08:41

Re: Summenbildung im QuickReport?
 
Zitat:

Zitat von Jelly
Du könntest im AfterScroll Event deines TDataset Abköömlings die Summe bilden:

Delphi-Quellcode:
Gesamt := Gesamt + Dataset.FieldByName('Gesamtnetto').AsFloat ;
Im OnBeforePrint Ereignis deines Summarybands kannst Du dann ein Label mit deinem Wert befüllen.

Aber kann Quickreport wirklich nicht von Haus aus Summen bilden :gruebel: Ist schon ne Weile her, und ich hab Quickreport zur Zeit gar nicht zur Hand.

Genauso habe ich das gemacht, jedoch wird der letzte Datensatz immer doppelt summiert, da Afterscroll warscheinlich am Ende nochmal aufgerufen wird. Wie kann ich das verhindern, bzw. feststellen das ich beim letzten Datensatz bin ?

Vielen Dank

gogl1985 30. Aug 2007 11:16

Re: Summenbildung im QuickReport?
 
Habe das Problem selbst wie folgt gelöst:

Delphi-Quellcode:
procedure TForm1.Query1AfterScroll(DataSet: TDataSet);
begin
anzahl_ds:=anzahl_ds+1;

if anzahl_ds>Query1.RecordCount then
   begin

   end
   else
       begin
       if Query1.FieldByName('Lagerbestand').AsString='' then
            begin
            summenetto := summenetto + Query1.FieldByName('Preis').AsFloat;
            end
       else
            begin
            summenetto := summenetto + (Query1.FieldByName('Preis').AsFloat*Query1.FieldByName('Lagerbestand').AsFloat);
            end;
       end;

end;
Anzahl der Datensätze mit RecordCount abfragen und entsprechend berechnen.

mkinzler 30. Aug 2007 11:35

Re: Summenbildung im QuickReport?
 
Wobei .RecordCount nicht immer das richtige Ergebnis liefert.

raiguen 31. Aug 2007 11:10

Re: Summenbildung im QuickReport?
 
Noch ein Tipp meinerseits:

Im AfterPrint-Ereignis vom entsprechenden DetailBand die Summe bilden ;)

Und noch ein Tipp:
im BeforePrint-Ereignis des Reports unbedingt die SummenVariable auf 0 setzen!! DAs gilt im Übrigen für alle 'berechneten' Variablen...
Warum?? Nun, falls du vor dem Ausdruck erst eine Preview machst(manche Kunden möchten das gerne...) , und daraus dann den Papierdruck gestartet wird, hast du im Summaryband doe doppelte Summe, weil Quickreport alle Printereignisse ja nochmal durchläuft...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 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 by Thomas Breitkreuz