Używanie operatora IN do filtrowania w usługach raportowania

Czy ktoś może doradzić, Jaka powinna być składnia podczas używania operatora IN w filtrze tabeli. Próbowałem poniżej ale snytax jest zły:

Tutaj wpisz opis obrazka

Author: JsonStatham, 2013-11-07

15 answers

Jeśli zmienisz właściwość Value i dodasz oddzieloną przecinkami listę wartości, które powinny działać:

Tutaj wpisz opis obrazka

To zadziałało na mnie w szybkim teście.

Książki Online wydają się być dość lekkie na przykładach, ale znalazłem jedno odniesienie; zobacz przykład In w powszechnie używanych filtrów. Byłoby miło, gdyby to zostało lepiej wyjaśnione.

 18
Author: Ian Preston,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-07 16:31:52

Z tym też miałem pewne problemy. Microsofts własna dokumentacja stwierdza, że prosta rozdzielana przecinkami lista wartości w polu wartość powinna działać. To jest mylące, bo nie. przynajmniej nie dla mnie i używam SSRS 2012 z Visual Studio 2010.

Okazuje się, że gdy używasz operatora IN, SSRS oczekuje tablicy wartości. Istnieje wiele sposobów, aby to działało dla filtra. Następujące przykłady należy wpisać w edytorze wyrażeń.

Pierwszy sposób (również sposób wyjaśniony w blogu linkowanym poniżej) jest po prostu wpisać listę rozdzielaną przecinkami w wartości łańcuchowej, a następnie użyć funkcji split na nim.

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

Lub możesz wyprowadzić swoją listę z parametru wielowartościowego. Parametr wielowartościowy jest już tablicą, więc wszystko, co musisz zrobić, to odwołać się do niego za pomocą wyrażenia parametru, jak pokazano poniżej.

=Parameters!MultiValueParam.Value

Znalazłem tę informację na poniższym blogu. http://sqlblogcasts.com/blogs/simons/archive/2007/11/20/RS-Howto--Use-the-IN-operator-in-a-filter-expression.aspx

 43
Author: Jordan H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-10 22:46:18

To faktycznie działa:

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

Jest to testowane w SSRS 2012.

 17
Author: novell morris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-14 00:04:13

Jeśli zalecane rozwiązanie jakoś nie działa dla ciebie, spróbuj użyć semicon jako separatora.

Przykład: kryteria jeden; kryteria dwa

U mnie zadziałało.

 4
Author: Mark Keip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-14 08:22:56

Usuń początek = z wyrażenia, tzn.

"criteria one" , "criteria two"
 4
Author: Will Wainwright,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-14 19:49:26
"value1" "value2"

Z jedną spacją i bez przecinka zadziałało dla mnie. Najśmieszniejsze jest to, że wracając do opieki po testach, pojawia się jako

value1, value2

Z przecinkiem i bez cudzysłowów. Jeśli wyciąć, a następnie wkleić go bezpośrednio z powrotem do tego samego pola, to nie działa. To jakiś popapraniec.

Podstawowym typem danych jest nvarchar(10), a nie null

Testowane Z VS 2017 i SSRS 2016
 3
Author: rgfuller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 23:25:51

To działało dla mnie w SSRS 2012.

"kryteria pierwsze","kryteria drugie"

 2
Author: Gopal Ghelani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-06 22:42:31

Dla wartości całkowitych można użyć:

Type: Text

Operator: In

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

Powinno działać na 2008 R2 i nowszych wersjach

 2
Author: ilker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-02 13:34:36

Mój problem został ostatecznie rozwiązany po wielu próbach, tylko za pomocą tej metody.

Wyrażenie:

=Instrev ( kompletny łańcuch z ogranicznikiem,wartość do wyszukiwania )

Type: Integer

Operator:

Wartość: 0

 1
Author: Adrian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 16:48:49

OMG tyle odpowiedzi...
Wiem, że to działa:

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,","),",") 

Używając tej metody, byłem w stanie wywołać SP raz, użyć go w param, aby uzyskać dostępne wartości, uruchomić raport, a tabela tablix odczytuje wybrane dane z kroku #5 powyżej i wyświetla prawidłową liczbę wierszy.

 1
Author: sbrichard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-07 03:41:51

Wpisz to zapytanie do wyrażenia:

=Join(Parameters!MultiValueParam.Value)
 0
Author: user2851776,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-16 08:34:36

Moje wartości obejmowały ukośniki do przodu. Jedynym sposobem, w jaki mogłem uzyskać operator SSR w ▼, Aby obsłużyć je poprawnie, było wyrażenie =CStr("google / cpc,bing / cpc").Split(",")

 0
Author: Vorlic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-07 14:45:21

Prawdopodobnie jestem z nowszą wersją SSRS. Typ wartości to tekst . For me worked as,

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

Cytaty Doble są obowiązkowe.

 0
Author: SNR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-29 23:38:32

Rozwiązanie uniwersalne:

Wyrażenie: [ columnName ]

Operator: In

Value: [@ parameterName ]

 0
Author: user1935511,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-07 17:20:50

Wpisz tutaj opis obrazka

Każda pomiędzy wartością liczbową wymaga jednej spacji. jego praca w porządku

 -2
Author: Rajenthiran T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-07 12:37:34