Im heutigen Artikel erzählen wir über eine wichtige Änderung, die zum Grundsatz des Erstellens von Master-/Detailberichten in Stimulsoft-Softwares gehört.

Was ist Master-/Detailbericht?

Master/Detail ist ein Berichtstyp, in dem die Daten miteinander verbunden und als einige Ebenen organisiert sind: einige Datensätze des Detail-Datenbandes entsprechen einem Datensatz des Master-Datenbandes. Anders gesagt, Master-/Detailbericht ist ein Dokument mit der Detaillierung, zum Beispiel, ein Bericht, in dem die Daten nach den Kategorien angezeigt werden:


Im Viewer oben sehen wir eine übliche Vorlage: für jede Produktkategorie wird zuerst die Information über die Kategorie, und dann die Liste der Produkte, die zu dieser Kategorie gehören, angezeigt.

Die Struktur des Master-/Detailberichtes

In unseren Softwares gibt es zwei Möglichkeiten, die Bänder im Master-/Detailbericht zu platzieren.

Die erste Option ist die Platzierung vom Detail-Band nach dem Master-Band:



Die zweite Option ist die Platzierung vom Detail-Band auf dem Master-Band, weiter werden wir solche Option verschachteltes Detail-Band benennen:

Detail band within the Master band Bemerken Sie!

Die Komponente Panel wird als Behälter für andere Elemente verwendet. Auf einem Panel kann man ein oder einige Elemente platzieren. Sie können nur die Kreuzbänder direkt auf den anderen Bändern platzieren, alle anderen Bänder können nur in den Behältern platziert werden.
Die oben beschriebenen Optionen der Platzierung von Bändern funktionieren auf die gleiche Weise. Die Auswahl der Option hängt nur davon ab, welches Aussehen des Berichtes Sie erhalten möchten. In der Praxis wird die zweite Option verwendet, wenn es nicht so viele Daten für die Detaillierung gibt.

Die Besonderheiten des Erstellens von Master-/Detailberichten

Der Bericht, der sich am Anfang des Artikels befindet, ist ein Idealfall – alle Kategorien enthalten die Daten über die Produkte, und demzufolge, diese Daten sind angezeigt. Aber in realen Daten können einige Kategorien keine Produkte, d.h. keine Daten, enthalten. In diesem Fall hat die Kategorie-Detaillierung nichts anzuzeigen.

Gewöhnlich muss man nicht leere Kategorien anzeigen. Darum blendet die Engine diese Kategorien standardmäßig aus. Der Benutzer kann aber selbstständig wählen, leere Kategorien anzuzeigen oder auszublenden. Dafür muss man die Eigenschaft des Master-Bandes Drucken, wenn Detail-Daten leer (Print if Detail Empty) verwenden. Wenn Sie den Wert dieser Eigenschaft auf true stellen, werden alle Datensätze des Master-Bandes gedruckt, unabhängig davon, ob es für sie die Detail-Daten gibt.

Die Änderungen der Arbeit der Eigenschaft Drucken, wenn Detail-Daten leer

Doch zurück zum eigentlichen Thema. Ab Version 2023.2 haben wir die Logik der Arbeit der Eigenschaft Drucken, wenn Detail-Daten leer aktualisiert. Früher funktionierte diese Eigenschaft nur mit Detail-Bändern, die sich nach dem Master-Band befinden. Derzeit funktioniert die Eigenschaft auch mit Detail-Bändern, die sich auf dem Master-Band befinden. Bemerken Sie!

Früher wurden die verschachtelten Detail-Bänder unabhängig vom Wert der Eigenschaft Drucken, wenn Detail-Daten leer im Master-Band angezeigt. Darum, wenn für Master-Band die Eigenschaft auf true schon gestellt ist, wird nichts geändert, das Detail-Band wird wie früher ausgegeben.
Im technischen Sinne werden die verschachtelten Bänder immer als Detail-Bänder unabhängig davon, ob in diesen Bändern die Eigenschaft MasterComponent gestellt ist, benannt. Aber da die Eigenschaft Drucken, wenn Detail-Daten leer früher sie nichts beeinflusste, hatten einige Benutzer keine Ahnung davon.

Daher kann dieses Update einige Berichte mit verschachtelten Bändern, die ursprünglich nicht als Master-/Detailberichte erstellt wurden, beeinflussen. Wenn das verschachtelte Band keine Daten hat, wird das Hauptband auch nicht angezeigt werden.

Lösung

Wenn in Ihren Berichten das oben beschriebene Problem entstand, kann man eine aus zwei Optionen auswählen:

  • stellen Sie für das Band, das andere verschachtelte Bänder enthält, den Wert der Eigenschaft Drucken, wenn Detail-Daten leer auf true;

  • stellen Sie aus dem Code der Anwendung den Wert der statischen.
    StiOptions.Engine.CheckForEmptyNestedDetail=false.

Wenn das Problem mit vielen Ihren Berichten verbunden ist, oder Sie keine Zeit und keinen Wunsch haben, alle Ihre Berichte zu ändern, wählen Sie die zweite Option aus. Aber diese Option beeinflusst alle Berichte, d.h. wenn Sie irgendwann das Master-Band wegen des Fehlens von seiner Detaillierung in einem Bericht, haben die erste Option zu verwenden, und die Änderungen direkt in den Berichten zu erfüllen.

Bemerken Sie auch, dass einige Eigenschaften aus StiOptions nur für Rückwärtskompatibilität mit älteren Versionen eingeführt werden. Irgendwann, beim großen Refactoring, können diese Eigenschaften als Obsolete gekennzeichnet und nach einigen Jahren entfernt werden.
By using this website, you agree to the use of cookies for analytics and personalized content. Cookies store useful information on your computer to help us improve efficiency and usability. For more information, please read the privacy policy and cookie policy.