2009-07-09 7 views
0

Ich habe einen Jasper-Bericht, der eine Liste der Rechnungszeilen anzeigt. Diese Artikel werden nach Abrechnungszeitraum gruppiert, und danach, ob der Artikel eine Gebühr oder ein Guthaben ist. Für Abrechnungsperioden, in denen Gebühren, aber keine Gutschriften vorhanden sind, möchte ich in der Kreditgruppe für diesen Zeitraum ein statisches Textfeld mit der Angabe "Keine Gutschriften" anzeigen. Wie kann das gemacht werden?In JasperReports statischen Text statt leere Gruppe anzeigen

Bearbeitet um hinzuzufügen: Dies ist davon ausgegangen, dass ich eine SQL-Abfrage für die Datenquelle verwenden, im Gegensatz zu einer benutzerdefinierten. Wenn ich meine Datenquelle anpasse, kann ich dies in der Vorverarbeitung behandeln, bevor ich den Bericht erreiche, aber ich hoffte, einen Weg zu finden, Jaspers Verhalten zu umgehen, Gruppen zu überspringen, ohne dass Zeilen die Gruppenkriterien erfüllen.

Antwort

1

Wenn Sie in Ihrer Datenquelle eine Gesamtanzahl von Krediten für jede Gruppe erhalten haben, können Sie die Eigenschaft 'Ausdruck beim Ausdruck drucken' im statischen Text verwenden. z:

new Boolean ($F{total_credits}.equals(0)); 

Der statische Text muß in der Gruppe Kopf- oder Fußzeile gehen, da es nicht in der Gruppe Detailabschnitt funktionieren würde (es mehrfach ausdrucken würde).

Möglicherweise müssen Sie eine Variable erstellen, anstatt $F{total_credits} direkt zu verwenden. Ich bin mir nicht sicher, wie JasperReports mit dem Zugriff auf Felder in Gruppenfüßen umgehen kann. Sie können auch feststellen, dass es in der Gruppenkopfzeile die korrekten total_credits aufruft, während dies im Gruppenfuß nicht der Fall ist.

Der andere Weg wäre, eine Variable zu haben, die die Gesamtzahl der Credits in der Gruppe zählt. Sie müssten den "Reset-Typ" für die Variable auf "Gruppe" setzen und dann die Reset-Gruppe festlegen. Der Variable Ausdruck wäre so etwas wie:

$V{myvariable} + 
($F{credit_or_debit}.equals("credit") ? new Integer(1) : new Integer(0)) 

und der Anfangswert Ausdruck new Integer(0) wäre

Dann in der Gruppe Fußzeile Sie die ‚print, wenn Ausdruck‘ verwenden könnten auf dem statischen Text in den Variablen suchen .

Verwandte Themen