Es gibt also ein Problem, das auftritt, wenn Sie mehrere Gruppenkopfzeilen verwenden. Der erste Header verhält sich wie erwartet, geordnet nach Spaltenwert A, nur bei eindeutigen Werten. Der 2. Header, der Spaltenwert B verwendet, wird bei jedem Eintrag gedruckt, obwohl es sich um nicht eindeutige Werte handelt.
-
Theoretisch sollte es Ihnen möglich sein, ORDER BY zu verwenden:
ORDER BY ValueA, ValueB
um den Bericht ordnungsgemäß anzuzeigen, vorausgesetzt, Sie verwenden sql, plsql, usw... Bei mir ist das jedoch nicht passiert, obwohl es bei anderen zu funktionieren scheint.
- Verwenden Sie Unterberichte, um die geringfügigen Unterschiede über eindeutige Berichte anzufügen. Sie erstellen einen Hauptbericht mit leeren Details. Dann erstellen Sie eindeutige Berichte, um als Unterberichte zu dienen. Schließlich verwenden Sie das Unterberichtselement, um die Werte in den Hauptbericht zu verknüpfen. Obwohl dies eine Menge Arbeit bedeutet und zu wiederholtem Code führen kann.
-
Ein trickreicher Weg, den ich benutzte, war: Eine Mischung aus "Print When Expressions" mit logischen booleschen Ausdrücken mit 2 Gruppenkopfzeilen und einem Spaltenkopf. Boolesche Ausdrücke:
$F{QUERY}.equals(Query1) && ($P{P_Typequery}.equalsIgnoreCase("QueryA") && $P{P_parameter} == null)
und
$F{QUERY}.equals(Query1) && ($P{P_Typequery}.equalsIgnoreCase("P_QueryA") && $P{P_parameter} != null)
mit zwei Gruppenkopfzeilen und einem Spaltenkopf. Der Spaltenkopf wird nicht für jede Zeile wiederholt, daher weisen Sie einem der Booleschen Ausdrücke sein "Druck wenn" zu, damit er nicht immer gedruckt wird. Der erste Gruppenkopf wiederholt sich nicht für jede Zeile und funktioniert. Der 2. Gruppenkopf wird verwendet, wenn Sie möchten, dass er sich für jeden eindeutigen Wert wiederholt, da er sich immer für jede Zeile druckt, und Sie verwenden den anderen Booleschen Ausdruck für sein "Druck wenn". Hoffentlich hilft es.