web-dev-qa-db-ja.com

IN演算子を使用してレポートサービスでフィルター処理する

テーブルフィルター内でIN演算子を使用するときの構文をどのようにすればよいでしょうか。私は以下を試しましたが、snytaxは間違っています:

enter image description here

31
JsonStatham

Valueプロパティを変更し、動作する値のカンマ区切りリストを追加するだけの場合:

enter image description here

とにかく、これは簡単なテストでうまくいきました。

Books Onlineは例についてはかなり軽いようですが、私は1つの参照を見つけました。 Commmonly Used FiltersInの例を参照してください。これをもっとうまく説明できたらいいですね。

15
Ian Preston

私もこれに関していくつかの問題を抱えていました。 Microsofts own documentation は、Valueボックスの値の単純なコンマ区切りリストが機能することを示しています。 ITはしないので、これは紛らわしいです。少なくとも私にとってはそうではなく、Visual Studio 2010でSSRS 2012を使用しています。

IN演算子を使用している場合、SSRSは値の配列を期待していることがわかります。これをフィルターで機能させるには、いくつかの方法があります。次の例は、式エディターで入力するためのものです。

最初の方法(以下にリンクされているブログでも説明されている方法)は、文字列値にカンマ区切りのリストを入力し、それに対してsplit関数を使用することです。

=split("2B,2C",",")

または、複数値パラメーターからリストを派生させることができます。複数値パラメーターは既に配列であるため、以下に示すように、パラメーター式を介して参照するだけです。

=Parameters!MultiValueParam.Value

この情報は次のブログで見つけました。 http://sqlblogcasts.com/blogs/simons/archive/2007/11/20/RS-Howto--Use-the-IN-operator-in-a-filter-expression.aspx

38
Jordan H

これは実際に機能します:

=CStr("Value1,Value2,Value3,Value4,etc").Split(",")

これはSSRS 2012でテストされています。

15
novell morris

推奨される解決策が何らかの形で機能しない場合は、セミコンをセパレータとして使用してみてください。

例:基準1。基準2

それは私のために働いた。

4
Mark Keip

式から先頭の=を削除します。

"criteria one" , "criteria two"
3
Will Wainwright
"value1" "value2"

1つのスペースで、コンマは機能しませんでした。おもしろいことに、テスト後に戻ってみると、

value1, value2

コンマと引用符なし。それを切り取ってから同じフィールドに直接貼り付けると、機能しません。これは、バグのあるs ** tです。

基になるデータ型はnvarchar(10)であり、nullではありません

VS 2017およびSSRS 2016でテスト済み

2
rgfuller

これはSSRS 2012で機能しました。

「基準1」、「基準2」

2
Gopal Ghelani

整数値には次を使用できます。

タイプ:テキスト

演算子:で

値:= New Integer(){8800,8820}

2008 R2以降のバージョンで動作するはずです

2
ilker

私の問題は、この方法を使用するだけで、多くの試みの後に最終的に解決されました。

式:

= InStrRev(区切り文字付きの完全な文字列検索する値

タイプ:整数

演算子: <>

値: 0

1
Adrian

おそらく、私は最近のSSRSのバージョンと一緒にいるでしょう。値のタイプはtextです。私にとっては、

"criteria 1";"criteria 2";...;"criteria N"

二重引用符は必須です。

0
SNR

OMGとても多くの答え...
これが機能することは知っています。

1) MY SP returns VARCHAR(n) for the field I will filter in the tablix. Returning INT DOES NOT WORK in my solution. I don't know why (yet).       
2) report.param.allow multiple values = true  
3) tablix.filter.expression.datatype = text  
4) tablix.filter.operator = IN  
5) tablix.filter.value = =SPLIT(JOIN(Parameters!id.Value,","),",") 

このメソッドを使用して、SPを1回呼び出し、パラメーターで使用して使用可能な値を取得し、レポートを実行すると、Tablixテーブルが上記のステップ5で選択したデータを読み取り、正しい行数を表示しました。

0
sbrichard

私の値にはスラッシュが含まれていました。 SSRSを取得できる唯一の方法 In      ▼ それらを正しく処理する演算子は、式_=_CStr("google / cpc,bing / cpc").Split(",")を使用していました

0
Vorlic

式に次のクエリを入力します。

=Join(Parameters!MultiValueParam.Value)
0
user2851776