1

2 つのデータセットを持つ SSRS のレポートがあります。1 つのデータセットNegativeNumbersは、メイン データセットで使用される 0 個以上の値を含む 1 つの列を返します。

問題は、@NegativeNumbers渡す値がない場合に発生します。エラーが発生します。

NegativeNumbers パラメーターに値がありません。

NegativeNumbers クエリは常に値を返すとは限らない (これは正しい) ため、値がない場合でもメイン データセットを正しく実行する必要があります。「空の値を許可する」にチェックを入れるとうまくいくと思いましたが、違います。

パラメーター@NegativeNumbersは非表示になっているため、空の値と複数の値を許可するようにチェックしていても、null 値は取りません。デフォルト値はNegativeNumbersデータセット値に設定されます。隠されたものは利用可能な値が好きではありません。

NegativeNumbers データセットの基本コードは次のとおりです。

select colName
where  colName < 0 -- returns all values less than 0 as values
                   -- for parameter "NegativeNumbers"

メイン データセットの基本的なコードは次のとおりです。

select bunchOfColumns
from   mytable
where  aColumnName in (@NegativeNumbers)
       -- this returns only the values where the column value is a match for one
       -- of the values returned by the @NegativeNumbers dataset

実際のクエリはこれよりもはるかに複雑で、union all ステートメントが含まれていますが、これは私がやろうとしていることを示しています。最初のクエリで値が返されない場合、2 番目のクエリでエラーが発生します。データセットが空で、「空の値を許可する」がチェックin ('')されている場合、値を単に「」に置き換えないのはなぜですか?@NegativeNumbers

私はグーグルを精査しました。運がない。さまざまなパラメーター オプションを試してみました。運がない。レポートを作り直しました。そして何もありません。私はいつもこのエラーを受け取りますが、それを修正する方法がわかりません。

*私のコーディングの存在の意味を疑問視しながら、机の上で頭を打ちました。
*はぁ

これはいくつかの高度な SSRS のものであり、私は説明するのが得意ではないので、私がやろうとしていることを明確にするのに役立つ質問がある場合は、質問してください。

4

1 に答える 1

2

そこで、NegativeNumbers が常にデータセットを返す場所を回避しました。

    if exists (select query)
    then select query
    else '2'         
     //my key will never equal 2 so the main dataset will 
    //always return the results from  only the positives

簡単な回避策をどうぞ!

于 2013-05-08T14:19:17.120 に答える