AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Quickreport

Ein Thema von jangbu · begonnen am 18. Apr 2013 · letzter Beitrag vom 19. Apr 2013
Antwort Antwort
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#1

Quickreport

  Alt 18. Apr 2013, 15:16
Hallo,

in meinem QR (jeweils ein Vorfall pro Seite)

QRGroup -> HaederInfo
DetailBand -> Detailinfo
PageFooter -> bis auf ein einzelnes QRDBText-Feld alles Konsanten

erschein im QRDBFeld des PageFooter immer bereits die Information des nächsten Datensatzes? Alle DBFelder kommen von einer einzigen SQL-Abfrage? Hätte ich da versehentlich was geändert? Ein Pagefooter.before_print -> next habe ich jedenfalls nicht programmiert.

Hat vielleicht jemand einen Tipp?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Quickreport

  Alt 18. Apr 2013, 15:31
Dieses QRDBText-Feld ist ganz offensichtlich mit dem Dataset des Detailbandes verknüpft.
Das kann so nicht funktionieren.
Angenommen es passen 50 Detailsätze auf den Report.
Der Reportgenerator mißt aber nicht vorher aus wieviele Detailbänder auf's Papier passen
sondern er lässt es draufankommen.
Entweder das aktuell generierte Detailband passt noch drauf oder nicht.
Falls nicht, wird das Footerband generiert und eine neue Seite begonnen.
Is klar, daß dann der Reportgenerator schon beim nächsten Datensatz ist.
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Quickreport

  Alt 18. Apr 2013, 16:14
ja sämtliche Informationen auf diesem Report kommen vom gleichen Dataset, nach dem Muster

select * from Rechnung where datum >= xxxx

Im Kopf (QRGroup) stehen Headerdaten
in der Mitte (Datailband) die einzelnen Positionen,....
im Fuß die AGBs (also Konstanten), aber eben zusätzlich 1 QRDBText-Feld z.B. Mitarbeiter

Das alles sollte doch aber auf die gleiche Seite und nich der Mitarbeiter schon von der nächsten Bestellung. Habe versucht ein QRExpr (QueryField -> Mitarbeiter) per PageFooter.before_print -> QRExpr.Caption:= Mitarbeiter manuell zuzuweisen, da kommt aber immer die Info aus dem letzten DatenSatz der select-abfrage.

Irgendwie muss ich doch aber alle Daten eines Datensatzes auf "eine" Seite bekommen.
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Quickreport

  Alt 18. Apr 2013, 16:25
ach ja, es passen definitv alle Detaildaten auf eine Seite(max 10 Zeilen). Es kann also nicht vorkommen das es durch die Menge der Daten zu einer zweiten Seite pro Datensatz kommt.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Quickreport

  Alt 18. Apr 2013, 17:05
... Es kann also nicht vorkommen das es durch die Menge der Daten zu einer zweiten Seite pro Datensatz kommt.
Das "weiss" der Reportgenerator aber nicht.
Er arbeitet immer seinen Standardalgorithmus ab.

In der Abfrage müsste aber eigentlich auch der Mitarbeiter auftauchen
select * from Rechnung where datum >= xxxx and Mitarbeiter='yyyy' weil andernfalls nicht sichergestellt werden kann, dass immer der gleiche Mitarbeiter in den Daten ist.
Du kannst dir den Mitarbeiter vorher (!) in einer Variablen merken und dann im Event BeforePrint einem QrLabel oder QrExpression zuweisen.

Wenn du einen Bericht gruppiert nach Mitarbeitern drucken willst, dann wäre ein GroupHeader und ein GroupFooter Band einzusetzen.
Der Mitarbeiter würde dann auf dem GroupFooter und nicht auf dem allgemeinen PageFooter gedruckt.
Wie man das genau macht lässt sich aus der Ferne aber schlecht erklären.

Auf jeden Fall sollte man Datenfelder aus dem Detail Dataset nicht im (Page-)Footer oder (Page-)Header verwenden.
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Quickreport

  Alt 19. Apr 2013, 09:56
Hallo sx2008,

danke für Deine Tips! Habe jetzt den PageFooter in einen GroupFooter(GroupBand) geändert. Damit passt es. Der GroupFooter hängt nun zwar immer direkt hinter dem DetailBand und lässt sich leider (auch) nicht per QRBand.beforeprint -> QRBand2.top := xxx an eine feste Position unten anheften, was ja der Pagefooter kann, aber nun habe ich jedenfalls alle daten eines Datensatzes auf einer Seite zusammengefasst.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz