Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#3

AW: QuickReport, NeedData ohne DB-Anbindung

  Alt 23. Nov 2023, 10:28
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
  Mit Zitat antworten Zitat