[iReport] Übergabeparamter: Zusammengesetzter String

g.rottig

Mitglied
Guten Morgen,

in meiner Report Query verwende ich in der where-Bedingung einen String Parameter:

Code:
WHERE c.`inv_Number` in ( $P{inv_Number} )

Wenn ich bei einer Preview des Reports einen einfachen Wert für diesen Parameter übergebe, z.B. "Value1" (ohne Anführungsstriche), passt das Ergebnis. Wenn ich aber
- Value1,Value2,Value3
- 'Value1','Value2','Value3'
- "Value1,Value2,Value3"
- "'Value1','Value2','Value3'"
eingebe, bleibt der Report leer, das heißt, er kann nichts mit diesen Werten anfangen. ABER:

Wenn ich im Statement "$P{inv_Number}" mit "'Value1','Value2','Value3'" ersetze, also

Code:
WHERE c.`inv_Number` in ( 'VAL1','VAL2','VAL3' )

bekomm ich das gewünschte Ergebnis.

Also, wie muss die Eingabe für den Parameter bei einer Preview nun formatiert sein, damit im Hintergrund ein zusammengesetzter String entsteht bzw. damit sie äquivalent zu meiner festkodierten Variante ist?

Hoffe, Ihr könnt mir helfen.

Grüße
 

g.rottig

Mitglied
Hm, Danke erstmal für Deine Antwort.
Meinst Du, ich soll das '!' bei meinem Statement ergänzen?
Denn dann kommt die Meldung, ich soll einen default-Wert für diesen Parameter setzen. Wenn ich das mache - sinnvoll ist dann aber nur "null" - kommt die Meldung immernoch.
Oder meinst Du, ich soll "$P!{}" verwenden, wenn ich den Report ausführe und ich den Parameter setzten muss?
Wenn ja, dann wie folgt?
$P!{'VAL1','VAL2'}
Das funktioniert leider auch nicht.
 
Zuletzt bearbeitet:

g.rottig

Mitglied
ok, hat doch funktioniert.
Als ich das Ausrufezeichen das erste mal hinzufügte, kam eben die oben genannte Fehlermeldung, dass der verwendete Parameter einen default-Wert benötige. Nachdem ich einen solchen eingetragen hatte und erneut das Statement testete, wurde meine Änderung anscheinend nicht übernommen; die Meldung kam erneut. Nach sämtlichen anderen Versuchen probierte ich diese Lösung dann noch einmal und es funktionierte, nicht einmal ein default-Wert wurde mehr verlangt... naja. Wie dem auch sei.

Code:
WHERE c.`inv_Number` in ( $P!{inv_Number} )

Beim Aufruf des Reports können dem Parameter dann beliebig viele Werte übergeben werden:

Code:
'Value1','Value2','Value3'

Fall gelöst, vielen Dank!

Als Ergänzende Information würde mich noch interessieren, was das '!' bewirkt. Wenn das noch jemand wissen sollte, wäre ich um eine Aufklärung sehr erfreut! :)

schönen Tag noch
 

Ähnliche Java Themen

Neue Themen


Oben