![]() |
Quickreport
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? |
AW: Quickreport
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. |
AW: Quickreport
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. |
AW: Quickreport
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.
|
AW: Quickreport
Zitat:
Er arbeitet immer seinen Standardalgorithmus ab. In der Abfrage müsste aber eigentlich auch der Mitarbeiter auftauchen
SQL-Code:
weil andernfalls nicht sichergestellt werden kann, dass immer der gleiche Mitarbeiter in den Daten ist.
select * from Rechnung where datum >= xxxx and Mitarbeiter='yyyy'
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. |
AW: Quickreport
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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