0

1 つの入力パラメーターと 2 つの多値パラメーターがあります。2 つの多値パラメーターをオプションとして設定します。2 つの多値パラメーターを選択せず​​に、レポートの入力から結果を取得する方法はありますか? これを試しましたが、うまくいきません:リンク

4

1 に答える 1

0

したがって、国を念頭に置いて、簡単な例を試してみてください。これは多値パラメーターのソリューションではないことは承知していますが、必要なことは実行します。RDL では、2 つのパラメーターを定義します。1 つは Country 用で、もう 1 つは City 用などです。次に、ストアド プロシージャから国パラメーターを設定し、名前を表示テキストとして使用し、ID を値として使用できます。(デフォルト値を null に設定すると、すべてが最初に選択されます)

 SELECT C.Name, C.ID From Countries AS C
 UNION
 SELECT 'All', NULL

ここに画像の説明を入力

次に、country パラメーターに選択した値を使用する別の手順を使用して、City パラメーターの値を設定します (これにより前方依存関係が作成されるため、パラメーター リストで Country が City の前に表示されていることを確認してください。そうしないと、レポートの作成時にエラーが発生します)。 .

 DECLARE @Country_ID int
 SELECT C.Name, C.ID FROM Cities AS C 
 WHERE (C.Country_ID = @Country_ID)
 UNION
 SELECT 'All', NULL

これで、レポートの結果セットを返すプロシージャが Company と City ID パラメーターの両方を受け入れるようになり、where 句には次のようなものがあります。

 DECLARE @Country Int,
         @City Int

 SELECT * FROM X
 WHERE  (X.Country_ID = @Country_ID OR @Country_ID IS NULL) AND
        (X.City_ID = @City_ID OR @City IS NULL)

明らかに、クエリに合わせてこれを少し変更する必要がありますが、これにより、ユーザーは国のみを選択したり、国と都市を選択したり、何も選択したりできなくなります。

PS。null をセンチネル値として使用する予定がある場合は、問題のパラメーターの [Allow Null Value] チェックボックスをオンにすることを忘れないでください。

ここに画像の説明を入力

于 2013-05-01T15:13:10.907 に答える