Ich habe einen SSRS-Bericht mit 3 Datensätzen, die von einer Datenquelle gespeist werden. Der Hauptdatensatz ist eine gespeicherte Prozedur, die einige Daten basierend auf einer Reihe von Parametern aggregiert, die von den beiden anderen Datensätzen unterstützt werden.
Die gespeicherte Hauptprozedur für diesen Bericht verfügt über 4 Parameter. Eine ist eine ID für den Datentyp, zwei sind für Start- und Enddaten und die dritte ist nur ein Flag-Parameter. Der Flag-Parameter ist der mehrwertige Parameter, bei dem ich mehrere Flag-Werte übergeben möchte, die auch VARCHAR-Werte sind.
In meiner gespeicherten Prozedur für meinen @ Flag-Parameter habe ich Folgendes:
WHERE [Flag] IN (@Flag)
Dann wird natürlich der Parameter @Flag im SSRS-Bericht so festgelegt, dass mehrere Werte zulässig sind, die auch aus einer Abfrage ausgefüllt werden, die diese @ Lag-Werte aus einer Dimensionstabelle abruft.
Mein Problem
In den meisten Fällen funktioniert beim Umgang mit INT-Werten dieselbe Technik. Wenn ich mich jedoch mit Zeichenwerten beschäftige, schlägt dies fehl. Wenn ich eine Flagge wähle, funktioniert der Bericht auf magische Weise. Wenn ich mehr als ein Flag auswähle, scheinen die Flags nicht korrekt an die gespeicherte Prozedur übergeben zu werden, und es werden keine Ergebnisse zurückgegeben.
Beim Testen des mehrwertigen Flags direkt in der gespeicherten Prozedur:
WHERE [Flag] IN ('A', 'B', 'C')
Die gespeicherte Prozedur funktioniert ordnungsgemäß. Das Problem ist also nicht die gespeicherte Prozedur, sondern wie SSRS die mehrwertigen Werte an den Parameter @Flag übergibt.
Lösungen ausprobiert
Ich habe versucht, die folgenden Anpassungen am SSRS-Dataset für diese @ Flag-Parameter vorzunehmen:
=join(Parameters!<your param name>.Value,",")
UND auch dieser:
=SPLIT(JOIN(Parameters!<your param name>.Value,","),",")
Diese arbeiten alle mit einzelnen Werten, aber niemals mit mehreren Werten.
Was fehlt mir hier?
quelle
=join(Parameters!<your param name>.Value,",")
) kann dem Datensatz hinzugefügt werden, der den Parameter liest. Auf der Registerkarte "Parameter" befindet sich rechts neben dem Dropdown-Feld "Parameterwert" eine Schaltfläche "fx" zum Hinzufügen von Ausdrücken -Nieder.WHERE <Table>.[<Column>] IN (@MultiValueParm)
, dann könnte der Code in der gespeicherten Prozedur seinWHERE CHARINDEX(<Table>.[<Column>], @MultiValueParmAsText) > 0