1

現在、3 つのサブレポートと 1 つのメイン レポートがあります。

メイン レポートには と の 2 つのパラメータがSELECTDATEありEMP_IDます。メイン レポートは Order_Nbr をすべてのサブレポートに送信します。

すべてのサブレポートは、1 つの従業員と 1 つの日付のみを選択すると完全に機能しますが、複数の値を選択すると爆発します。

SQL は列を INT として持っています。メイン レポートとサブレポートに両方のパラメーターがあり、SELECTDATE は複数の値を持つテキストとして設定され、EMP_ID は複数の値を持つ整数に設定されます。私のクエリには、日付 IN (@SELECTDATE) と emp_id IN (@EMP_ID) が含まれています。

機能するため、明らかに正しい情報をサブレポートに送信しますが、より多くの値を渡して機能させたいと思います。現在クエリで IN 関数を使用して設定されているように、従業員と月末の日付をチェックおよびチェック解除する現在の機能が気に入っています。

4

3 に答える 3

4

サブレポートのパラメーターを非多値にし、「使用可能な値」セットを削除します。join メソッドを使用して、親レポートから複数値パラメーターを文字列として渡します

=Join(Parameters!Emp_ID,",")

EMP_ID パラメータはカンマ区切りのリストに設定されます。これは、複数値パラメータがクエリに送信するものです。

これがテキスト クエリでどのように機能するかはわかりませんが、ストアド プロシージャでは機能します。

サブ レポートをスタンドアロン レポートとしても使用する場合は、新しいパラメーターを追加して、ユーザーが設定できるパラメーターから @Emp_Id にパラメーター値を送信できるようにする必要があります。

于 2012-11-15T08:46:36.603 に答える
0

SSRS2016で機能する次のソリューションを使用しました。これは、テキスト パラメータでも機能します。

  1. 上記のように、値を JOIN してパラメーターを文字列としてサブレポートに渡します。

Join(Parameters!EmpID, ",")

  1. サブレポートで、パラメーターをテキストとして受け入れます。
  2. サブレポートの SQL で、string_splitSQL 2016 の関数を使用して値のテーブルを返し、それをメイン クエリに結合します。したがって、基本的に、パラメーターの名前が「EmpID_Multi」の場合は、

... JOIN (SELECT value FROM string_split ( @EmpID_Multi, ",")) mv ON mv.value= ...

注: SQL 最適化のために値を一時テーブルにプルすることを検討することもできます (オプティマイザーがおかしいことをすることがあります...)。

于 2020-04-23T09:00:10.903 に答える