1つのデータソースから供給される3つのデータセットを含むSSRSレポートがあります。メインデータセットは、他の2つのデータセットを利用した一連のパラメーターに基づいて一部のデータを集約するストアドプロシージャです。
このレポートを強化するメインのストアドプロシージャには、4つのパラメーターがあります。1つはデータの種類のID、2つは開始日と終了日のID、3つ目は単なるフラグパラメーターです。フラグパラメーターは、VARCHAR値でもある複数のフラグ値を渡したい複数値パラメーターです。
@Flagパラメータのストアドプロシージャには、次の共通点があります。
WHERE [Flag] IN (@Flag)
次に、もちろん、SSRSレポートの@Flagパラメーターを設定して、ディメンションテーブルからそれらの@Flag値をプルしているクエリからも入力される「複数の値」を許可します。
私の問題
INT値を処理する場合、ほとんどの場合、同じ手法を使用すると機能します。ただし、文字値を処理していると失敗します。1つのフラグを選択すると、レポートは魔法のように機能します。複数のフラグを選択すると、フラグがストアドプロシージャに正しく渡されず、結果が返されません。
ストアドプロシージャで複数値フラグを直接テストする場合:
WHERE [Flag] IN ('A', 'B', 'C')
ストアドプロシージャは正しく動作します。したがって、問題はストアドプロシージャではなく、SSRSが複数値の値を@Flagパラメータに渡す方法です。
試したソリューション
この@FlagパラメータのSSRSデータセットに次の調整を試みました。
=join(Parameters!<your param name>.Value,",")
そしてこれも:
=SPLIT(JOIN(Parameters!<your param name>.Value,","),",")
これらはすべて単一値で機能しますが、複数値では機能しません。
ここで何が欠けていますか?
=join(Parameters!<your param name>.Value,",")
)をパラメーターを読み取るデータセットの[パラメーター]タブの下に追加できます:[パラメーター値]ドロップの右側に、式を追加するための[fx]ボタンがあります-ダウン。