Utilisation de paramètres pour contrôler les données d'un rapport (Générateur de rapports version 2.0)

Les paramètres de rapport peuvent être utilisés de deux manières : pour filtrer les données de la source des données ou pour filtrer les données dans le rapport. Le filtrage de données de la source de données peut améliorer les performances de traitement et d'affichage d'un rapport. Si vous ne pouvez filtrer les données de la source, vous pouvez utiliser des paramètres pour filtrer les données de rapport dans le rapport. Vous pouvez également utiliser des paramètres pour trier et organiser les données dans un rapport.

Pour obtenir une vue d'ensemble du filtrage de données, consultez Filtrage de données dans un rapport (Générateur de rapports version 2.0).

Utilisez cette rubrique pour en savoir plus sur le filtrage de données à l'aide de paramètres.

Filtrage des données de la source de données

Pour filtrer les données de la source de données, utilisez des paramètres de requête dans votre requête de dataset. Dans certains concepteurs de requêtes, vous pouvez ajouter un volet Filtre et sélectionner une option de paramètre pour chaque champ que vous souhaitez utiliser comme paramètre de rapport. Dans d'autres concepteurs de requêtes, vous pouvez ajouter des paramètres de requête à la commande de requête. Lorsque vous enregistrez la requête, le texte de commande est analysé. Pour chaque paramètre de requête, un paramètre de rapport correspondant est créé. Utilisez le nœud Paramètres du volet Données du rapport pour afficher la liste des paramètres de rapport.

Lorsqu'un rapport s'exécute, l'utilisateur sélectionne des valeurs pour chaque paramètre de rapport et ces valeurs sont passées à la requête. Lorsque la requête s'exécute sur la source de données, seules les valeurs spécifiées par l'utilisateur sont extraites pour le rapport. Vous pouvez également spécifier l'invite qui intitule le paramètre de rapport sur la barre d'outil de rapport.

Paramètres de requête

Les paramètres de rapport sont créés automatiquement lors de la définition des paramètres de requête.

Lorsque vous définissez un dataset, vous spécifiez un type de source de données spécifique ; par exemple, MicrosoftSQL Server. Lorsque vous définissez la requête pour chaque dataset, le concepteur de requêtes associé identifie des variables dans le texte de la commande de la requête, puis il crée un paramètre de requête pour chaque variable. Toutes les associations de source de données et de fournisseur de données ne prennent pas en charge les requêtes avec des variables. Pour plus d'informations sur la syntaxe de la requête attendue par la source de données, consultez Utilisation de paramètres de requête avec des sources de données spécifiques (Générateur de rapports version 2.0).

Pour une source de données SQL Server, les requêtes incluent généralement des variables dans la clause WHERE d'une instruction Transact-SQL pour limiter l'étendue des données retournées lors de l'exécution d'une requête. Le Concepteurs de requête relationnelles génère automatiquement une requête pour vous et fournit une option permettant de créer une variable de requête pour chaque filtre que vous définissez. Pour plus d'informations, consultez Interface utilisateur du Concepteur de requêtes relationnelles (Générateur de rapports version 2.0).

De même, une requête d'une source de données Analysis Services inclut en principe des variables MDX utilisées dans une clause FILTER. Les requêtes peuvent également inclure des variables transmises en tant qu'entrées aux procédures stockées ou aux fonctions définies par l'utilisateur.

Chaque fois que vous modifiez la requête d'un dataset, la requête est retraitée. Si vous modifiez une requête en supprimant ou en renommant une variable, les paramètres de la requête reflèteront ces modifications.

Vous pouvez créer des paramètres de dataset supplémentaires sur la page Paramètres de la boîte de dialogue Propriétés du dataset. Les paramètres que vous créez ne sont pas modifiés lorsque la requête change.

La valeur par défaut de chaque paramètre de requête est définie à une expression qui correspond au paramètre de rapport associé. Pour modifier la valeur par défaut, utilisez la page Paramètres de la boîte de dialogue Propriétés du dataset. Par exemple, pour une source de données SQL Server, si le paramètre de requête est @MyParameter, le paramètre de rapport est MyParameter et la valeur de @MyParameter est l'expression [@MyParameter]. Pour plus d'informations, consultez Boîte de dialogue Propriétés du dataset, Paramètres (Générateur de rapports version 2.0). Vous pouvez modifier manuellement les paramètres de requête et définir leurs valeurs par défaut. Pour plus d'informations, consultez Procédure : associer un paramètre de requête à un paramètre de rapport (Générateur de rapports version 2.0).

Les paramètres de rapport qui sont automatiquement créés utilisent les valeurs par défaut suivantes :

  • Valeur unique

  • Type de données Text

  • Invite dont la valeur est le nom du paramètre

  • Aucune valeur par défaut

  • Aucune valeur disponible

Vous devrez peut-être modifier ces propriétés en fonction du type de données que représente le paramètre de requête. Pour plus d'informations, consultez Création de paramètres de rapport et définition des propriétés des paramètres de rapport (Générateur de rapports version 2.0).

[!REMARQUE]

Si vous supprimez ou modifiez le nom d'un paramètre de requête, le paramètre de rapport correspondant n'est pas supprimé ou modifié automatiquement. Si vous supprimez un paramètre de requête et que vous n'avez pas besoin du paramètre de rapport correspondant, vous devez le supprimer manuellement. Si vous modifiez le nom d'un paramètre de requête, un nouveau paramètre de rapport correspondant au nom modifié est créé lorsque vous enregistrez la requête. Vous pouvez renommer le paramètre de rapport pour qu'il corresponde au nom du nouveau paramètre de requête, puis mettre à jour les propriétés du paramètre de dataset afin de lier le paramètre de requête au paramètre de rapport.

Dans le Générateur de rapports version 1.0, les paramètres de rapport sont créés automatiquement lorsque vous définissez une invite sur une clause de filtre.

Paramètres dépendants ou en cascade

Lorsque vous créez une requête qui utilise plusieurs paramètres de requête, vous pouvez créer un ensemble de paramètres en cascade. Les paramètres en cascade permettent de filtrer un très grand nombre de valeurs de paramètres afin d'obtenir un nombre de valeurs facile à gérer. Supposons, par exemple, qu'une requête inclue les paramètres @Category, @Subcategory et @Product, où la liste de sous-catégories dépend de @Category et la liste de produits dépend de @Subcategory. Lorsqu'un utilisateur choisit une valeur pour le paramètre de rapport Category, les valeurs pour Subcategory sont limitées aux valeurs valides pour la catégorie choisie. Une fois que l'utilisateur sélectionne une valeur pour Subcategory, les choix pour Product sont déjà filtrés par le choix pour la catégorie et la sous-catégorie. Cette technique vous permet de réduire les choix valides pour un paramètre à un nombre raisonnable de valeurs.

Pour concevoir des paramètres en cascade, vous devez inclure les éléments suivants dans votre rapport :

  • La requête de dataset principale, qui a plusieurs paramètres de requête liés.

  • Une liste triée de paramètres de rapport, chacun étant lié à un paramètre de requête. En général, ces paramètres sont automatiquement créés à partir de la requête principale. Chaque paramètre dépendant doit suivre le paramètre dont il dépend. L'ordre des paramètres peut être modifié dans le volet Données du rapport, dans lequel vous pouvez déplacer les paramètres vers le haut ou vers le bas dans la collection. Pour plus d'informations, consultez Procédure : modifier l'ordre d'un paramètre de rapport (Générateur de rapports version 2.0).

  • Un dataset distinct pour chaque paramètre de rapport qui fournit ses valeurs disponibles. Il est important d'utiliser la même orthographe avec respect de la casse pour chaque paramètre de requête afin que les paramètres de requête et les paramètres de rapport soient correctement liés. La requête correspondant à chaque ensemble de valeurs disponibles pour chaque paramètre de rapport doit fournir uniquement des valeurs qui sont opportunes dans le contexte de la requête principale.

Dans l'exemple, le paramètre de rapport Product dépend de Subcategory, qui lui-même dépend de Category. Category doit figurer en premier, suivi par Subcategory, puis par Product. La requête du dataset qui fournit les valeurs disponibles pour Category doit afficher toutes les catégories qui sont valides pour la requête principale. La requête qui fournit les valeurs disponibles pour Subcategory une fois que vous avez choisi une catégorie doit fournir des valeurs qui sont valides pour la catégorie (Category) donnée, plus toutes les contraintes qui existent dans la requête principale.

Pour plus d'informations, consultez Procédure : ajouter des paramètres en cascade à un rapport (Générateur de rapports version 2.0).

Filtrage de données de rapport après l'exécution d'une requête

Vous pouvez également créer des paramètres de rapport et les utiliser dans des expressions de filtre pour filtrer les données d'un dataset de rapport, d'une région de données ou d'un groupe de tableaux matriciels. Pour plus d'informations, consultez Filtrage de données dans un rapport (Générateur de rapports version 2.0) et Procédure : ajouter un filtre (Générateur de rapports version 2.0).

Les paramètres de rapport font partie d'une définition de rapport lorsque vous créez un rapport qui peut être géré indépendamment une fois qu'il a été publié. Une fois la définition de rapport publiée, vous pouvez modifier les propriétés des paramètres à l'aide du Gestionnaire de rapports. Pour plus d'informations, consultez la rubrique « Définition des propriétés d'un rapport publié » de la documentation de Reporting Services dans la documentation en ligne SQL Server.

Utilisation de valeurs valides qui changent rapidement pour un paramètre

Lorsque vous définissez des valeurs disponibles qui changent très rapidement, ces valeurs peuvent être obsolètes avant même que le rapport ne soit exécuté. Ainsi, il peut arriver que l'utilisateur sélectionne dans la liste une valeur qui n'est plus valide au moment où il la soumet et exécute le rapport. Pour éviter pareille situation, écrivez des requêtes retournant des datasets pour des listes de valeurs valides qui ne changeront généralement pas avant que l'utilisateur ait eu le temps de sélectionner une valeur et d'exécuter le rapport.

De même, il faut éviter les valeurs non interrogées qui changent rapidement. Par exemple, si vous indiquez la date actuelle comme l'une des valeurs disponibles, écrivez une expression utilisant la propriété DateTime.Today et non la propriété DateTime.Now. Ceci permet d'éliminer la partie heure de la valeur, qui change de seconde en seconde. Vous pouvez également utiliser une variable de rapport ou une variable de groupe pour calculer une valeur une fois et la maintenir constante pendant la durée de traitement du rapport. Pour plus d'informations, consultez Utilisation de références à des collections de variables de rapport et de groupe dans les expressions (Générateur de rapports version 2.0).