Utilisation de paramètres à valeur unique et à valeurs multiples

Mis à jour : 12 décembre 2006

Les paramètres peuvent inclure une seule valeur ou plusieurs valeurs. Un paramètre à valeurs multiples peut être défini à plusieurs valeurs. Lorsque vous définissez une liste de valeurs disponibles pour un paramètre à valeurs multiples, Reporting Services intègre automatiquement une option Sélectionner tout dans la liste déroulante de la barre d'outils Rapports. Vous pouvez utiliser cette option pour sélectionner et désélectionner toutes les valeurs dans la liste.

Aa337292.note(fr-fr,SQL.90).gifRemarque :
L'option Sélectionner tout a été désactivée pour SQL Server 2005 Service Pack 1, mais restaurée dans SQL Server 2005 Service Pack 2.

Pour définir la propriété à valeurs multiples d'un paramètre, choisissez l'option Valeurs multiples dans la boîte de dialogue Paramètres du rapport. Vous pouvez définir un type de paramètre à plusieurs valeurs, à l'exception des valeurs booléennes.

Les paramètres à plusieurs valeurs sont principalement utilisés pour autoriser une clause de restriction de requête (par exemple, la clause WHERE Transact-SQL ou la clause Filtre MDX) pour tester l'inclusion dans un ensemble de valeurs au lieu de l'égalité à une valeur unique. Pour plus d'informations sur la création de paramètres à valeurs multiples, consultez Didacticiel : Ajout de paramètres à un rapport tabulaire de base et Création de paramètres de rapport et définition des propriétés des paramètres de rapport.

Aa337292.security(fr-fr,SQL.90).gifRemarque relative à la sécurité :
Dans un rapport qui inclut un paramètre de type String, veillez à utiliser une liste de valeurs disponibles (également appelée liste de valeurs valides) et assurez-vous que l'utilisateur qui exécute le rapport dispose uniquement des autorisations nécessaires à l'affichage des données du rapport. Lorsque vous définissez un paramètre de type Chaîne, la zone de texte qui apparaît vous permet d'entrer n'importe quelle valeur. Une liste de valeurs disponibles limite les valeurs susceptibles d'être entrées. Si le paramètre de rapport est lié à un paramètre de requête et vous n'utilisez pas une liste de valeurs disponibles, l'utilisateur d'un rapport peut taper la syntaxe SQL dans la zone de texte, ce qui peut exposer le rapport et votre serveur de rapports au risque d'une attaque par injection SQL. Si l'utilisateur dispose d'autorisations suffisantes pour exécuter la nouvelle instruction SQL, cela risque de générer des résultats indésirables sur le serveur. Si un paramètre de rapport n'est pas lié à un paramètre de requête et les valeurs de paramètre sont incluses dans le rapport, l'utilisateur d'un rapport peut taper une URL ou la syntaxe de l'expression dans la valeur de paramètre et restituer le rapport au format Excel ou HTML. Si un autre utilisateur affiche ensuite le rapport et clique sur le contenu du paramètre rendu, il peut exécuter accidentellement le lien ou le script malveillant. Pour réduire le risque d'exécution accidentelle de scripts malveillants, ouvrez les rapports uniquement à partir de sources approuvées. Pour plus d'informations sur la sécurisation des rapports, consultez Sécurisation des rapports et des ressources.

Écriture de requêtes associées à des paramètres de rapport à valeurs multiples

Vous pouvez définir un paramètre à valeurs multiples pour n'importe quel paramètre de rapport que vous créez. Toutefois, si vous souhaitez retransmettre plusieurs valeurs de paramètre à une requête, les conditions suivantes doivent être réunies :

  • La source de données doit être SQL Server, Oracle ou Analysis Services.
  • La source de données ne peut pas être une procédure stockée. Reporting Services ne prend pas en charge la transmission d'un tableau de paramètres à valeurs multiples à une procédure stockée.
  • La requête doit utiliser une clause IN pour spécifier le paramètre.

L'exemple suivant décrit l'utilisation d'un mot clé IN dans la clause WHERE d'une instruction Transact-SQL. Pour plus d'informations sur le mot clé IN ou sur les résultats retournés par cette requête, consultez IN (Transact-SQL).

SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
    JOIN Person.Contact AS c 
    ON e.ContactID = c.ContactID
WHERE e.Title IN (@Title)

Pour mettre cela en pratique dans un rapport, définissez un dataset à l'aide de cette requête. Modifiez les propriétés du titre du paramètre de rapport créé automatiquement comme suit :

  • Sélectionnez l'option Valeurs multiples.
  • Dans la zone Valeurs disponibles, sélectionnez l'option Sans requête. Entrez la liste suivante dans la colonne Valeur (laissez la colonne Étiquette vide) : Design Engineer, Buyer, Marketing Assistant.
  • Dans la zone Valeurs par défaut, entrez Buyer.
  • Exécutez l'aperçu. Sélectionnez différentes combinaisons de valeurs pour Titre et vérifiez que vous obtenez les résultats attendus.
Aa337292.note(fr-fr,SQL.90).gifRemarque :
Le serveur de rapports réécrit les requêtes pour les sources de données qui ne peuvent pas traiter les paramètres en tant que tableau. La réécriture de la requête est nécessaire pour produire le résultat souhaité. Cette opération est déclenchée lorsqu'un paramètre est défini en tant que paramètre à valeurs multiples et que la requête utilise une instruction IN pour spécifier le paramètre. Si vous créez une requête qui ne comporte pas l'instruction IN, gardez à l'esprit que vous passez outre la logique fournie par le serveur de rapports pour la prise en charge des paramètres à valeurs multiples.

Les expressions de filtre des datasets, du regroupement de données et des régions de données sont définies sous l'onglet Filtre des pages de propriétés correspondantes. Si vous avez défini une expression de filtre qui fait référence à un paramètre à valeurs multiples, vous devez utiliser l'opérateur IN dans l'expression de filtre. Les expressions de filtre qui utilisent des opérateurs autres que l'opérateur IN génèrent des erreurs de traitement. Pour plus d'informations, consultez Procédure : ajouter un filtre (Générateur de rapports).

Écriture d'expressions qui référencent des paramètres à valeurs multiples

Lorsque vous faites référence à un paramètre dans une expression, vous utilisez les paramètres de la collection globale. Lorsque vous utilisez des paramètres à valeurs multiples dans les expressions, vous devez comprendre comment adresser une valeur unique ainsi que l'ensemble complet de valeurs. Le tableau suivant contient des exemples et des descriptions de propriétés de paramètres pour des paramètres avec l'option Valeurs multiples définie.

Exemple Description

Parameters!<ParameterName>.Value

Tableau de valeurs de données de type variant pour le paramètre.

Parameters!<ParameterName>.Label

Tableau de chaînes qui sont des étiquettes du paramètre.

Parameters!<ParameterName>.IsMultiValue

Propriété booléenne indiquant si l'option Valeurs multiples du paramètre a été sélectionnée.

Parameters!<ParameterName>.Count

Nombre de valeurs dans le tableau.

Parameters!<ParameterName>.Value(0)

Première valeur dans un tableau à valeurs multiples.

Parameters!<ParameterName>.Label(0)

Première étiquette dans un tableau à valeurs multiples.

Parameters!<ParameterName>.Value(Parameters! <ParameterName>.Count-1)

Dernière valeur dans un tableau à valeurs multiples.

Parameters!<ParameterName>.Label(Parameters! <ParameterName>.Count-1)

Dernière étiquette dans un tableau à valeurs multiples.

=Join(Parameters!<ParameterName>.Value,", ")

Expression qui concatène dans le tableau toutes les valeurs d'un paramètre à valeur multiples de type Chaîne dans une chaîne.

=Split("Value1, Value2, Value3",",")

Prend une chaîne et crée un tableau d'objets pouvant être utilisé pour la transmission à un sous-rapport ou un rapport d'extraction qui attend un paramètre à valeurs multiples.

Vous pouvez utiliser les fonctions SPLIT et JOIN pour séparer ou associer des valeurs du tableau dans une expression. Vous pouvez utiliser les fonctions STRING et CINT pour convertir les valeurs en chaînes ou en entiers.

Pour plus d'informations et pour obtenir des exemples de paramètres à valeurs multiples et à une seule valeur dans des expressions, consultez Utilisation de paramètres dans les expressions.

Historique des modifications

Version Historique

12 décembre 2006

Contenu modifié :
  • Option Sélectionner tout restaurée pour le SP2.

Voir aussi

Tâches

Procédure : ajouter, modifier ou supprimer un paramètre de rapport (Concepteur de rapports)

Concepts

Définition des propriétés de paramètres d'un rapport publié
Utilisation de paramètres dans les expressions
Utilisation de paramètres dans les expressions

Autres ressources

Didacticiel : Ajout de paramètres à un rapport tabulaire de base
Didacticiel : Fonctionnalités avancées utilisant les paramètres
Paramètres du rapport (Générateur de rapports)

Aide et Informations

Assistance sur SQL Server 2005