Je vais concevoir un rapport en utilisant SSRS 2005. Est-il possible de faire la sélection de l'ensemble de données dynamiquement? Disons que je vais avoir deux tables, où la première est le résumé et la seconde est les données de détail. Un de mes paramètres (avec les valeurs Summary
et Detail
) déterminera quelle version du rapport doit être affichée. Puis-je avoir deux jeux de données différents, et en cliquant sur le bouton Afficher le rapport dans la boîte de dialogue d'affichage des paramètres (ou avant), définir quel jeu de données sera utilisé?Sélection dynamique de l'ensemble de données dans SSRS
Répondre
Vous devrez probablement avoir 2 paires de tables contenues, disons, dans un rectangle, et cacher celles qui ne sont pas utilisées (au niveau du conteneur). Ou utilisez des sous-rapports. Si vous trouvez un moyen de changer de jeu de données, vous devrez vous assurer que toutes les colonnes sont identiques et assurez-vous que toutes les fonctions utilisant le DataSet comme paramètre de portée sont également modifiées ... ce qui rend Je pense que ce n'est tout simplement pas pris en charge.
Il serait plus facile de créer et de maintenir si vous avez deux tables séparées et de cacher l'une ou l'autre en fonction du choix effectué.
Je n'ai pas essayé cela, mais je pense qu'une autre possibilité serait d'utiliser trois rapports: un conteneur, un sous-rapport sommaire et un sous-rapport détaillé. Basculer entre les sous-rapports en fonction du choix.
Il existe cependant une performance obtenue pour la première implémentation. SSRS essayera de remplir chaque DataSet dans le rapport lorsqu'il se charge, même ceux qui ne sont pas utilisés dans la sortie du rapport ou par d'autres DataSets ou expressions. En d'autres termes, ce n'est pas parce que vous affichez le rapport de synthèse que vous ne demandez pas à la base de données de remplir également vos données de détail.
Il existe une solution de contournement qui peut améliorer un peu les performances, mais qui se terminera quand même par un déclenchement sur le serveur. Le hack consiste à définir un paramètre d'indicateur pour déterminer si la requête doit réellement renvoyer des résultats réels ou si elle doit simplement renvoyer les colonnes souhaitées.
Vous pouvez essayer d'utiliser un seul ensemble de données et d'avoir une région de données de résumé et de détail (table, liste, etc.) dans le rapport, dont l'une est visible et l'autre non. Dans ce scénario, l'ensemble de données n'est évalué qu'une seule fois et vous répondez toujours à vos besoins.
Hope this helps,
Bill
Vous pouvez utiliser les données unique en utilisant l'instruction switch quelque chose comme ceci: Vous pouvez taper ceci dans l'onglet de données, mais les résultats ne sont visibles que en avant-première onglet, mais pas l'onglet de données comme les requêtes régulières.
=Switch(Parameters!ToDecide.Value = "Summary",
"Your query for Summary",
Parameters!ToDecide.Value = "Detail",
"Your query for Detail")
- Assurez-vous de ne pas avoir d'espaces avec excès dans la requête (pas plus d'un espace si nécessaire)
- Les deux requêtes doivent retourner les valeurs requises par le tableau dans la mise en page.