1

私はストアド プロシージャが初めてで、SSRS でそれらを使用しています。

複数の値を許可するパラメータを持つストアド プロシージャを使用して単純な SSRS レポートを作成したい (別のプロシージャからの結果)

次のような2つの単純なストアドプロシージャがあります。

Create Procedure WO
@STARTDATE datetime, @ENDDATE datetime, @DISTRICT varchar(25)
AS
SELECT A.WO, A.CUST, A.DISTRICT, A.COMPL_DATE
FROM WORK_ORDERS A
WHERE A.COMPL_DATE between (@STARTDATE) and (@ENDDATE) 
and A.DISTRICT_NAME in (@DISTRICT)

Create Procedure DISTRICT
AS
SELECT B.DISTRICT_NAME
FROM DISTRICTS B

私のSSRSレポートでは、DISTRICTプロシージャからの利用可能な値を持つ「DISTRICT」パラメータを使用して、DISTRICTプロシージャからの結果を使用してWOプロシージャを報告しています(複数の値を許可)。また、WO プロシージャのパラメータで DISTRICT パラメータを使用しました。

これは、1 つの地区を選択する場合は機能しますが、複数の地区を選択する場合は機能しません。喜んで助けてくれる人はいますか?

4

1 に答える 1

0

私が間違っていなければ、問題は文字列パラメーター @district の処理にあります。おそらく、4 つの地区が選択されたと仮定すると、SSRS は「N、S、E、W」のようなものを渡しています。ストアド プロシージャは次のようになります。 : ...A.District_Name in ('N,S,E,W')... これは、地区名が 'N,S,E,W' の場合にのみ値を返します。したがって、入力値を分割し、「N」、「S」、「E」、「W」として再構築する必要があると思います。残念ながら、SQL Server には SPLIT 関数がないため、UDF を作成するか (いくつかの投稿が利用可能です)、CLR 呼び出しを行う必要があります。

ここに賢い(そしてテストされていない)考えがあります - Replace(@District,',',''',''') を試してください(引用符は正しいと思います...)

于 2013-02-28T21:24:59.023 に答える