Im Zusammenhang mit dem Ersetzen von Textstellen und dem nachfolgendem Teilen des Textes kann ein Problem mit der Reihenfolge der Variablendefinition auftreten.
Innerhalb des JRXML des Reports werden die Variablen in der Reihenfolge abgelegt, in der diese angelegt wurden. Das ist nachträglich innerhalb des iReports auch nicht mehr änderbar… leider, denn im vorliegenden Fall wollte ich Texte ersetzen und den daraus resultierenden Text dann teilen.
Das Problem dabei, die Variable mit den Textersetzungen wurde nachträglich, also zuletzt angelegt und deshalb bei der Variablendefinition noch keinen Inhalt, als geteilt werden sollte…
Hier als Beispiel:
Es wurden die Variablen $V{text1}
und $V{text2}
angelegt, die Teil 1 und Teil 2 eines geteilen $F{text}
enthalten.
Danach wurde die Variable $V{text_neu}
erstellt die nun als Basis für $V{text1}
und $V{text2}
dienen sollten.
Aufgrund der Reihenfolge der Variablenanlage war zum Füllzeitpunkt von $V{text1}
und $V{text2}
die zuletzt angelegte $V{text_neu}
aber noch nicht gefüllt, weshalb es nur leere Variablen gab. 🙁
Um das zu korrigieren, gibt es zwei Möglichkeiten:
1. Die entsprechenden Variablen löschen und in der notwendigen Reihenfolge neu anlegen, oder
2. Ein direkter Eingriff in die JRXML-Quelldatei des Reports.
Für Punkt 2 gilt es innerhalb des JRXML die Variablendefinitionen zu finden. Diese liegen jede für sich in einem XML-Block <variable> ... </variable>
.
Diese Blöcke müssen jetzt entsprechend umsortiert werden, danach sollte alles klappen.