2009-11-19 14 views
1

Je suis chargé de faire rapport sur les données de l'enquête à l'aide de Reporting Services 2008.Reporting Services - obtenir des données dans les sous-rapports

Mon défi est le suivant:

  • une enquête a un certain nombre de questions
  • une question est l'un des trois types (une évaluation numérique, une question oui/non, ou un texte libre)

Pour gérer cela, j'ai décidé d'utiliser des sous-rapports sur mon rapport principal, par exemple J'ai défini un rapport pour chacun des trois types de question, et maintenant lorsque je fais un rapport sur un sondage, je crée de manière dynamique un RDL pour le rapport d'enquête, en utilisant les trois types de question comme sous-rapports. Cela fonctionne très bien jusqu'à maintenant - mais je suis confronté à un problème majeur: comment puis-je obtenir les données dans les sous-rapports?

L'approche que je vois actuellement est de faire en sorte que chaque (sous-) rapport par type de question définisse son propre ensemble de données, basé sur une source de données partagée, pour extraire les valeurs de la base de données. Je suis à peu près certain que cela fonctionnerait - mais je ne souhaite pas que 5, 10, 20 sous-rapports soient envoyés à la base de données pour obtenir leurs données de manière indépendante. Ce que j'espérais, c'était pouvoir aller chercher les données une seule fois pour l'ensemble de l'enquête, sur le rapport "principal", puis juste alimenter le sous-ensemble de données approprié dans chaque sous-rapport, comme il est rendu - mais je n'arrive pas à trouver un moyen de le faire ....

Est-ce que quelque chose me manque? Je n'ai pas eu beaucoup d'expérience avec Reporting Services, et mon dernier projet avec elle était il y a quatre ans (avec Reporting Services 2000) - il y a de fortes chances que je sois aveugle pour la solution évidente :-) Faites-le moi savoir!

Merci pour tous les conseils, les pointeurs vers de bons articles ou des blogs sur Reporting Services, et toute aide à tous!

Marc

Répondre

2

La manière habituelle est de passer des paramètres (comme la plage de dates) du principal rapport subreports puis subreports prendre soin de tout le reste. Pour améliorer les performances, vérifiez si vous pouvez générer des sous-rapports à partir du cache ou de l'instantané. Le cache stocke le rapport avec la combinaison des paramètres passés, donc après le premier "hit de la base de données" certains ou la plupart des sous-rapports peuvent être retournés depuis le cache.

+0

Merci - J'espérais trouver un autre moyen, mais il semble que je ne puisse pas vraiment faire grand-chose ici, sauf de passer des paramètres et d'interroger séparément les données de chaque sous-rapport. –

0

Si les paramètres sont les données finales dont vous avez besoin, puis il suffit de les utiliser et de créer un jeu de données factice dans le sous-état - vous pourriez avoir « SELECT 1 AS MANNEQUIN » comme sql (ceci suppose que les sous-rapports ont ou peut-être vous pouvez repenser l'ensemble de données «maître» avec une fonction ou une fonction de table?

Il serait encore taxer le serveur SQL, mais au moins, il le ferait en un coup et la vidange sur la boîte RS serait moins.

1

J'ai lutté avec le même problème. Mais il existe un moyen d'obtenir des performances raisonnables en utilisant "ensemble de données partagées en cache". Fondamentalement, les sous-rapports utiliseront un plus grand ensemble de données incluant toutes les lignes pour tous les sous-états. En utilisant "filtre de dataset" chaque sous-rapport peut filtrer les lignes correctement. Ceci n'est cependant disponible que pour la version 2008.