#1 2019-11-11 06:42:16

wdryden
Member
Registered: 2018-01-18

Checkboxes Multiselect Modus

Hallo,


wenn man in der Dynamischen Liste den Parametertyp "Checkboxes" im Multiselect Modus verwendet, und keines der Kästchen auswählt , so wird in der hinterlegten SQL-Query
$X{IN, wert, p} zu 0=0 umgewandelt (das gleiche gilt für die anderen mutliselect parametertypen).  Ich habe aber noch eine ältere Dynamische Liste (die wurde in einer RS-Version vor RS3.1.0-6010 erstellt)  bei der
$X{IN, wert, p} zu "wert IN $p" umgewandelt wird wenn ich keines der Kästchen ankreuze. Sprich, wenn ich den alten Report ausführe wird $X{IN, wert, p} zu "wert IN $p" umgewandelt und wenn ich diesen Bericht dupliziere und mit denselben Parametern nochmal ausführe wird $X{IN, wert, p} zu 0=0 umgewandelt. Kann es sein, dass das SQL string replace Verhalten bei diesen Parametertyp geändert wurde?

Danke und schöne Grüße,
Werther

Offline

#2 2019-11-11 08:30:30

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Checkboxes Multiselect Modus

Hallo Werther,

was genau meinst Du mit "wert IN $p"? Kannst Du bitte ein komplettes SQL Statement posten, wenn kein Wert ausgewählt wird?

Viele Grüße
Eduardo

Offline

#3 2019-11-12 10:56:57

wdryden
Member
Registered: 2018-01-18

Re: Checkboxes Multiselect Modus

Klar:
SQL-Queryabschnitt der dynamischen Liste:

  where  $X{IN,order_status, status } 

--status : Parametername
--order_status : Tabellenspalte

Wird im alten Bericht zu
where  order_sta  IN ($9)
konvertiert. Im duplizierten Bericht (mit exakt derselben Parametereingabe) wird es stattdessen zu
where  0 = 0
umgewandelt.

Offline

#4 2019-11-12 12:08:52

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Checkboxes Multiselect Modus

Hallo Werther,

ist "where  order_sta  IN ($9) " ein gültiges SQL -Queryabschnitt, bzw. kannst du das direkt so zu deiner DB schicken?
Ich kenne das nur so: "where  order_sta  IN (?)" bei PreparedStatements. Welche DB verwendest du ?
Und was steht in der Variable $9 bei leeren Parametern?

Ich bin mir nicht sicher ob es früher anders war, aber im ReportServer 3 benutzen wir bei leeren Parametern 0 = 0 by-design:

https://reportserver.net/en/guides/admi … arameters/

"Please observe that if no parameter is selected, this will by default translate in "All values are valid"."

Wir verwenden dafür die Jasper Konvention:
https://community.jaspersoft.com/docume … rs-queries
"If the parameter is null or contains an empty list, meaning no value has been set for the parameter, the entire $X{} clause is evaluated as the always true statement “0 = 0”."

Viele Grüße
Eduardo

Offline

#5 2019-11-18 10:21:54

wdryden
Member
Registered: 2018-01-18

Re: Checkboxes Multiselect Modus

Hallo Eduardo,

where  "order_sta  IN ($9)" wird zu "where  order_sta  IN (?)" umgewandelt. Welcher Wert aber Postgresql für die Variable einsetzt kann ich in der pg_stat_activity von Postgres nicht ermitteln.
Jedefalls hast du aber meine Frage beantwortet, dass bei leeren Parametern in ReportServer 3 schon immer 0=0 eingesetzt wurde. Das wollte ich nur nochmal sicher sein. Das Problem muss also irgendwo bei uns liegen und wir können das Thema schließen.

Danke und schöne Grüße wink,
Werther

Offline

Board footer

Powered by FluxBB