初めまして。
tisa-ytagoといいます。
まずは今の作業内容ですがレポートビルダー(Ver14.0.1016.240)で作成したレポートの
「アクション」で「URLに移動する」を選び「式」へ以下のように入力しています。
="javascript:void(window.open('"+ Globals!ReportServerUrl+"?/"+ サブレポート名 + "&rs:Command=Render" + "&rs:Format=EXCEL&" + "日付パラメータ=" + Fields!日付.Value +
Code.fnParam(文字パラメータ1) + "','_blank'))"
上記の「Code.fnParam」はレポートのプロパティのカスタムコード(VisualBasic)です。
SSRSではメインレポートの複数選択パラメータは選択されている値だけ動的に繰り返しURLへ組み込む必要があります。
しかしjavascriptの.selectedが使用できなかったのでまず「レポート変数」で以下の様に全項目全パターンの選択状態を取得します。
=IIf(instr(JOIN(メイン.文字パラメータ2, ","), 値1)<>0,"True","False")
文字パラメータは2~8まであり内容は値1~値2または値1~値7があります。
そして「Code.fnParam」で以下の様にURLを組み立てます。
メインレポートのパラメータの値が全て日本語なので変換しサブレポートのパラメータへ渡しています。
Public Function fnParam(ByVal 文字パラメータ1 as String) As String
Dim param as String = ""
If レポート変数1 = "True" then
param = param & "" & "&サブ.文字パラメータ2=" & "'" & "+escape(decodeURIComponent(" & "'" + メイン.文字パラメータ2 + "'" & "))+"
& "'"
End If
↓項目値の数だけ繰り返し
Return param
End Function
ここからが質問になります。
複数選択パラメータを全てまたは先頭以降選択している場合はうまく動作するのですが
飛び番で選択するとURLが無効になります。
OK → 2択中の1と2、2択中の1のみ、7択中の1と2と3と4と5と6と7、7択中の1のみ、7択中の1と2)
NG → (2択中の2のみ、7択中の1と3、7択中の2と3)
メインレポート及びサブレポートのパラメータの「空白の値を許可」、「複数の値を許可」、
「規定値」、「使用できる値」などを一通り変更してみましたが無効でした。
「Code.fnParam」にて複数選択パラメータの選択されていない値(FALSEの場合)に空白を設定しても無効でした。
無効になった場合の「Code.fnParam」の戻り値は'と"が混在していてALERTできません。
「アクション」でサブレポートにパラメータを引き継げば正しく動作しますがとてつもなく遅いです。
そもそもSSRSでjavascript:void(window.openでURLへ複数パラメータ(選択したもののみ)を渡す場合はお作法があるのでしょうか。
よろしくお願いします。