web-dev-qa-db-fra.com

Utilisation de l'opérateur IN pour filtrer les services de génération de rapports

Quelqu'un peut-il indiquer la syntaxe à utiliser lors de l'utilisation de l'opérateur IN dans un filtre de tableau ..__ J'ai essayé ce qui suit, mais la syntaxe est incorrecte:

enter image description here

26
JsonStatham

Si vous ne modifiez que la propriété Value et ajoutez simplement une liste de valeurs séparées par des virgules qui devraient fonctionner:

enter image description here

Cela a fonctionné pour moi dans un test rapide, de toute façon.

Books Online semble être assez léger sur les exemples, mais j'ai trouvé une référence; voir l'exemple In dans Filtres utilisés couramment . Ce serait bien si cela était mieux expliqué.

15
Ian Preston

J'ai eu quelques problèmes avec celui-ci aussi. Microsofts propre documentation indique qu'une simple liste de valeurs délimitées par des virgules dans la zone Valeur devrait fonctionner. C'est déroutant parce que CE N'EST PAS. Au moins, ce n’est pas le cas pour moi et j’utilise SSRS 2012 avec Visual Studio 2010.

Il s'avère que lorsque vous utilisez l'opérateur IN, SSRS attend un tableau de valeurs. Vous pouvez utiliser ce filtre de différentes manières. Les exemples suivants sont destinés à être tapés dans l'éditeur d'expression.

La première méthode (également expliquée dans le blog lié ci-dessous) consiste à taper simplement votre liste délimitée par des virgules dans une valeur de chaîne, puis à utiliser la fonction split.

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

Ou vous pouvez dériver votre liste d'un paramètre multi-valeur. Le paramètre multivaleur étant déjà un tableau, il vous suffit de le référencer via l'expression du paramètre, comme indiqué ci-dessous.

=Parameters!MultiValueParam.Value

J'ai découvert cette information via le blog suivant. http://sqlblogcasts.com/blogs/simons/archive/2007/11/20/RS-Howto--Use-the-IN-operator-in-a-filter-expression.aspx

36
Jordan H

Cela fonctionne réellement:

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

Ceci est testé dans SSRS 2012.

11
novell morris

Si la solution recommandée ne vous convient pas, essayez d’utiliser un semicon comme séparateur.

Exemple: critère un; critère deux

Cela a fonctionné pour moi.

4
Mark Keip

Cela a fonctionné pour moi dans SSRS 2012.

"critères un", "critères deux"

2
Gopal Ghelani

Pour les valeurs entières, vous pouvez utiliser:

Type: Texte

Opérateur: In

Valeur: = Nouvel Integer () {8800,8820}

Devrait fonctionner sur 2008 R2 et les versions plus récentes

2
ilker

Supprimez le = initial de l'expression, c'est-à-dire.

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

avec un espace et aucune virgule a fonctionné pour moi. Ce qui est amusant, c’est que lorsqu’on revient aux tests, c’est comme

value1, value2

avec une virgule et sans guillemets. Si je coupe ça, puis le colle directement dans le même champ, ça ne marche pas. Ceci est un buggy s ** t ici.

Le type de données sous-jacent est nvarchar (10) et non null

Testé avec VS 2017 et SSRS 2016

1
rgfuller

Je suis probablement avec une version plus récente de SSRS. Les types de valeurs sont text . Pour moi travaillé comme

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

Les guillemets sont obligatoires. 

0
SNR

Mon problème a finalement été résolu après de nombreuses tentatives, en utilisant uniquement cette méthode.

Expression:

= InStrRev (chaîne complète avec délimiteur, valeur à rechercher)

Type: Entier

Opérateur: <>

Valeur: 0

0
Adrian

OMG tant de réponses ...
Je sais que cela fonctionne:

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

En utilisant cette méthode, j’ai pu appeler le SP une fois, l’utiliser dans un paramètre pour obtenir les valeurs disponibles, exécuter le rapport et la table de tableau matricielle lire les données sélectionnées à l’étape 5 ci-dessus et afficher les valeurs correctes. Nombre de rangées.

0
sbrichard

Мои ценности включают косые черты. Динственный способ получить SSRSIn      ▼Оператор для их правильной обработки был с выражением =CStr("google / cpc,bing / cpc").Split(",")

0
Vorlic

Entrez cette requête dans l'expression:

=Join(Parameters!MultiValueParam.Value)
0
user2851776