2016-04-26 10 views
0

レポートクエリには、ActiveCustomersまたはAllCustomersの2つの値のいずれかを取るパラメータがあり、ユーザーがデータを選択することに基づいてフィルタリングされます。クエリはSQLサーバーでは正常に動作しますが、SSRSには適用されません

ここで私の問題は、クエリはSQLサーバーで正常に動作しますが、データセットクエリのパラメータの値をハードコードするか、代わりに "like"のようなフィルタリングを行うwhere節でSSRSで動作しません「=」の

SSRSパラメータはタイプTEXTとして定義され、 "ActiveCustomers"と "AllCustomers"の値を持ち、 "ActiveCustomers"を取るようにデフォルト設定されています。 私はすでに綴りが正しいと一貫性があることを確認しました。

ここで私の質問は、SSRSが "="で動作していない理由で、 "好き"を使用する必要があります。

declare @Show nvarchar(32) = 'ActiveCustomers' --or 'AllCustomers' 

とデータをフィルタリングwhere句は次のとおりです:

where (Order like '%2016') 
    and ((@Show = 'ActiveCustomers' and Order.[Status] <> 'Closed') or (@Show = 'AllCustomers')) 
+1

私が嫌うのは、人々がこれを言うとき**ですが**あなたの質問は何ですか? SSRSのパーサは、SSMSが放棄するようなものではないようです。おそらく、SSMSが変換するが、SSRSは好きではないという疑問のある構文があります。 –

+1

少なくとも、パラメータとwhere句を宣言する最初の部分のSQLコードを表示してください。また、どのようにSSRSでパラメータを定義していますか?それはテキストですか、または「使用可能な値」を使用していて、テキストを整数のようなものに変換していますか?問題を探す場所がたくさんありますが、詳細が必要です。 –

+0

ハノーファー・フィストとJグリーン、私は質問を編集し、うまくいけばあなたが望むものをカバーする。 –

答えて

1

簡単に回避策はであり、ここで

は、私は、パラメータおよびデータセットクエリから句を宣言する方法ですクエリをストアドプロシージャとして保存します。 SSRSにストアドプロシージャを実行させます。以前は複雑なクエリの問題を抱えていました。

+0

良いアイデアですが、メンテナンスのためにできるだけストアドプロシージャを使用しないことをお勧めします。 –

関連する問題