web-dev-qa-db-fra.com

SSRS Multi Value Parameter. Vérifiez si "Sélectionner tout" est sélectionné

J'ai un paramètre à valeurs multiples dans mon rapport SSRS. Je veux savoir si (Sélectionner tout) est coché dans ce paramètre.

En d'autres termes, si toutes les valeurs du paramètre sont vérifiées ou seulement certaines valeurs sont vérifiées.

C'est possible?

Je suis en mesure de connaître le nombre de valeurs sélectionnées via les paramètres!Paramètre.Compter. Existe-t-il un moyen de connaître le total des éléments de ce paramètre?

16
Sathya

Au cas où quelqu'un aurait encore des problèmes à le faire, je viens de coder cette solution facile.

=IIF(COUNTROWS("dataset").Equals(Parameters!parameter.Count),"it is equal","this is not equal")
23
Merr Leader

Pour le cas d'utilisation spécifique de l'affichage du filtre sélectionné sur votre rapport dans une zone de texte, voici l'expression qui affichera "Tout" si "(Tout sélectionner)" est sélectionné, sinon il affichera toutes les valeurs sélectionnées comme une virgule séparée liste:

=IIF(
     Parameters!YourMultivalueParam.Count = countrows("YourDataset"),
     "All",
     Join(Parameters!YourMultivalueParam.Label,", ")
 )

(divisé en plusieurs lignes pour plus de lisibilité)

countrows référence: https://technet.Microsoft.com/en-us/library/dd255215.aspx


Mentionnons les autres réponses, je veux simplement les étendre pour ce scénario courant.

8
Tim Abell

Votre approche semble bonne: je ferais en sorte que les options du paramètre proviennent d'un ensemble de données.

Ensuite, vous pouvez utiliser =COUNTROWS("DataSetName") pour renvoyer le nombre total d'options pour votre paramètre et le comparer avec Parameters!*Parameter*.Count comme vous le suggérez.

6
Jamie F

J'ai également fait face à ce problème et je l'ai résolu de cette façon.

J'ai un paramètre à plusieurs valeurs nommé "Carrier". Ensuite, j'ai ajouté un paramètre "CarrierHidden" qui est identique à "Carrier" seule chose est que j'ai rendu sa visibilité cachée.

="Carrier=" & Switch(Parameters!CarrierHidden.Count = Parameters!Carrier.Count, "All",
 Parameters!Carrier.Count > 1 And Parameters!CarrierHidden.Count > Parameters!Carrier.Count, "Multi",
 Parameters!Carrier.Count = 1, Parameters!Carrier.Label(0))
3
anakulk

Le moyen le plus simple sera de compter le nombre de paramètres sélectionnés et de les comparer au jeu de données

=IIF(Parameters!company_number.Count = CountRows("Dataset1"), True, False)
2
Aman H.

Le problème est que si vous essayez d'extraire quelque chose pour un autre ensemble de données, le référencement croisé du nombre de lignes dans un autre ensemble de données ne fonctionnera pas. Vous devrez aller avec ce que dit le post précédent. Créez un paramètre interne du type exact et affectez la valeur par défaut à l'ensemble de données entier. De cette façon, vous avez le nombre maximal de lignes depuis le parameter.count = rowscount Caché. De cette façon, vous pouvez l'utiliser dans un autre ensemble de données à condition que cet ensemble de données soit APRÈS que le premier soit rempli.

1
user3014413

Selon la recherche d'aide SSRS de Microsoft:

=Parameters!<ParameterName>.Count

Renvoie la valeur entière 1. Pour un paramètre à valeur unique, le nombre est toujours 1.

J'ai vérifié que cela fonctionne, vérifiez l'entier renvoyé pour le champ de comptage de paramètres intégré.

Autoriser plusieurs valeurs sur une sélection de paramètres. La vérification de la valeur du champ ci-dessus vous permettra de savoir combien de valeurs l'utilisateur a réellement choisies.

Dans ma situation, j'autorise plusieurs valeurs sur le numéro d'entreprise. Cela donne aux utilisateurs la possibilité de choisir une entreprise sur laquelle faire rapport ou plusieurs à la fois. Par demande du client, s'il en choisit plusieurs, afficher les données horizontalement. Si une seule entreprise est choisie dans la liste des paramètres, affichez les données verticalement et masquez l'autre tablix.

Donc, mon expression de visibilité ou de masquage ressemble à ceci dans l'un des tableaux:

=IIF(Parameters!company_number.Count > 1, True, False)

et comme ça dans l'autre:

=IIF(Parameters!company_number.Count = 1,True,False)
0
Robyn Gulasy