Zitat:
In qrba00d.NeedData wird MoreData = False gesetzt wenn keine Daten mehr da
Da MoreData nur beim ersten Mal True ist, muss bei den folgenden Aufrufen MoreData auf True gesetzt werden, wenn noch Daten folgen.
Ja, das ist schon klar. Aber es gibt zwei Probleme:
Wenn alles korrekt läuft, erfolgt der Ablauf wie folgt
Code:
qrbad.NeedData // Aufruf des NeedData des DATEN-Bandes
qrbah.BeforePrint // Aufruf des BeforePrint des HEADER-Bandes
qrbad.NeedData // Aufruf des NeedData des DATEN-Bandes, so lange bis MoreData = False gesetzt wird
qrbad.BeforePrint // Aufruf des BeforePrint des DATEN-Bandes, so lange MoreData = True gesetzt wurde
Problem 1: (gelöst)
Bevor ich Master = qrReport überall gelöscht habe, gab es Bandgruppen, da wurde qrbad.NeedData angesprungen, MoreData = True gesetzt, aber weder qrbah.BeforePrintnie noch qrbad.BeforePrint angesprungen. Obwohl True, wurde direkt auf die nächste Band-Gruppe weiter gesprungen.
Problem 2:
Die Gruppen, die nur aus zwei TQRChildBand bestehen (in meinem Beispiel qrba04), werden mal gedruckt mal nicht.
Ich bin jetzt aber so weit gekommen, dass es wohl damit zusammen hängt, ob die vorige Gruppe gedruckt wurde.
Es war einiges an Aufwand, da QuickReport sich so schwer tut, Bänder nachträglich zu verschieben oder einzufügen, aber ich habe jetzt alle Gruppen so eingefügt, dass sie immer aus
Code:
arba00h TQRBand.rbGroupHeader
qrba00d TQrSubDetail
qrba00f TQRBand.GroupFooter
qrba00m TQRChildBand
bestehen. Damit kann ich jede Gruppe für sich über qrba05d.NeedData einblenden oder eben nicht
Die Lösung war, dass ich in NotePad++ direkt im
DFM-File
- die neuen Bänder eingefügt habe
- alle Bänder im Code so angeordnet habe, wie sie kommen sollen
- und dann auch die Top-Position aller Bänder so berechnet und korrigiert habe, wie sie sein müssen
Danach habe ich die neuen Bänder auch im
PAS-File angelegt.
Und nach Neustart des Projektes sind die Positionen tatsächlich alle da, wo sie sein sollten. Incl. der neuen Bandgruppen, in die jetzt die alten TQRChild-Daten rein kommen
Das Problem ist also gelöst.
Jetzt muss ich noch die Logik incl. Befüllung der Datenfelder umstellen, aber das Schlimmste ist erledigt.
Und mit OnNeedData für jede Band-Gruppe bin ich jetzt zuversichtlich, dass ich die Kontrolle über die Bänder habe.
Trotzdem bin ich wieder stark am Überlegen, auf FastReport zu wechseln. Auch wenn dieses Projekt EndOfLife ist. Wir werden trotzdem noch jahrelang Service leisten müssen