1

3 つのパラメーター (@person_id、@Person_name、@Supervisor_name) があり、すべて[複数の値許可] と [空白の値を許可]プロパティが有効になっています。

レポートの列は、同じ列を持つデータセット テーブルで作成された Person_id、Person_name、Supervisor_name、Claims_done、average_claims_perday です。

データを返すデータセットには、クエリにフィルターがあります。

where @person_id in (@person_id) 
or [PersonName] in (@Person_name)
or Supervisor_name in (@supervisor_name)

要件は 3 つのパラメーターのうちです。いずれかのパラメーターが空白の場合、クエリは複数値で選択されたパラメーターに基づいて結果を返す必要があります。

例: データセットは次の結果を作成します。

11, abc, ジョン, 12, 3
22, def, ジョン, 345, 9
33, ghi, ブライアン, 89, 7
44, jkl, ブライアン, 45, 6
55, mno, ブライアン, 60, 7

パラメータ @Person_name = 'mno' および @Supervisor_name = 'John' を選択し、@person_id を空白のままにすると、次の結果が得られます。

11, abc, ジョン, 12, 3
22, def, ジョン, 345, 9
55, mno, ブライアン, 60, 7

@person_id = 11, 44 および @Supervisorname = 'John' を選択し、@Person_name を空白のままにすると、次の結果が得られます。

11, abc, ジョン, 12, 3
22, def, ジョン, 345, 9
44, jkl, ブライアン, 45, 6

パラメータのいずれかを空白のままにすると、レポートには何も表示されません。すべてのパラメータに対して少なくとも 1 つの値を選択すると、完璧な結果が得られます。

どんな助けでも大歓迎です。

4

1 に答える 1

1

私の理解が正しければ、パラメーターを処理するための要件は次のように言い換えることができます。パラメーターが設定されている場合は、それをフィルター処理します。それ以外の場合は、フィルタリングしないでください。

それが正しければ、where 句を次のように変更します。

WHERE (Person_id in (@person_id) OR @person_id = '')
AND (PersonName in (@Person_name) OR @Person_name = '')
AND (Supervisor_name in (@supervisor_name) OR @supervisor_name = '')

これは、各パラメーターが満たされている、空白である必要があることを意味します。

于 2012-06-15T15:36:09.000 に答える