7

SSRSについて質問です。レポートのデザインには、MSSQL Server management studio 2012 と BIDS Visual studio 2008 を使用しています。

いくつかの複数値パラメーターと、レコードを返すストアド プロシージャを含むレポートがあります。

ここで、ストアド プロシージャと文字列分割関数に渡されるパラメーター値の問題を見つけようとしました。文字列が予期しない形式で渡された場合、SQL サーバー プロファイラーを調べましたが、そうではありませんでした。サーバーで正確な実行コードをクエリとして実行し、結果を取得しました。しかし、レポート デザイナーのプレビュー ペインでレポートを実行すると、結果が返されません。

追加情報が必要な場合は、お知らせください。同じ問題に直面し、対応を知っている人がいるかもしれないと思っただけです。

4

6 に答える 6

7

推測して、多値パラメーターを渡す「方法」だと言います。個人的に SSRS を扱うときは、ビュー、テーブル関数を使用するか、SSRS がネイティブに理解できるように選択するだけです。

Where thing in (@Thing)

実際にはSSMSでこれを意味します:

Where thing in (@Thing.Value1, @Thing.Value2, @Thing.Value3, etc...)

あなたのprocは、実際にはコンマ区切りの配列である文字列を取っていると思います。'1,2,3,4' のような文字列配列を受け取るパラメーターを実行し、'Text' パラメーターのようなものを使用してプロシージャーをアドレス指定している場合、複数の値を指定するか、クエリから取得する必要があります。プロシージャが配列を含む文字列の値を取る場合は、パラメーターを結合します。例: dbo.test と呼ばれる proc が実行され、パラメーター ID の値 1、2、4 の行が返されます。次のように表示されます。

exec dbo.test @ids = '1,2,4'

この値を使用して SSRS で proc を実行したい場合、'IDS' と呼ばれる複数の値のパラメーターがある場合、次のように SSRS の関数で配列を手動でアセンブルする必要があります。

=JOIN(Parameters!IDS.Value, ",")

基本的に、コンマ区切り値のチェーンで複数の値を結合することにより、パラメーター「IDS」を実行するようにプロシージャーに指示します。[@IDS] のようにパラメータを指定する代わりに「パラメータ」をリストする左側のペインのデータセットでこれを行い、代わりに「Fx」をクリックして上記の関数を入力します。

このため、述語ロジックを使用してこれを処理できるため、私はビュー、選択、およびテーブル関数の大きな支持者です。

于 2013-08-27T20:33:28.440 に答える
3

この回答は時代遅れに見えるかもしれませんが、誰かがそれを必要とする場合に備えて、昨日同じ問題が発生したため、私の経験を再現し、Webページからの解決策を示します。

問題: 私のレポートには 2 つの日付パラメーターがあるため、その範囲のデータを取得するために、最初に 1 日間は機能しないことに気付きました。

回避策: クエリを操作して調整を行いましたが、1 か月を返すクエリを作成してもレポートに何も起こらなかったとき、すべての問題が SSRS にあることがわかりました。もちろん、レポートに送信するパラメーターを確認しました。

解決策: 日付パラメーターは問題ありませんでした (時間の部分に問題はありません)。パラメーター以外のタブである [データ] パネルのフィルターを確認するためにどこかを読みました。私はそれらのフィルターを入れていましたが、その時のことを完全に忘れていました.

于 2015-10-28T12:53:57.257 に答える