2009-11-19 119 views
1

我對調查數據的報告負責2008年的Reporting Services - 數據放入使用Reporting Services子報表

我面臨的挑戰是:

  • 的調查有許多問題:
  • 一問題是三種類型之一(數值EVAL,一個是/否的問題,或自由文本)

爲了解決這個問題,我決定在我的主報告,例如使用子報表我爲三種問題類型中的每一種定義了一份報告,現在當我報告調查時,我基本上動態地爲調查報告創建了一個RDL,並使用三種問題類型作爲子報告。

到目前爲止,實際上它工作得非常好 - 但我面臨着一個主要問題:如何將數據導入子報表?

我現在看到的方法是讓每個問題類型的每個(子)報告根據共享數據源定義自己的數據集,以便從數據庫中提取值。我很肯定這會起作用 - 但我並不十分熱衷於有可能的5,10,20子報表到數據庫去獨立獲取他們的數據。

我所希望的是能夠在整個調查中獲取數據,在「主要」報告中提取數據,然後將恰當的數據子集輸入到每個子報表中,因爲它正在呈現 - 但我似乎無法找到任何辦法做到這一點....

我錯過了一些完全明顯的東西?我對Reporting Services沒有太多的瞭解,而且我最近的一個項目是在四年前(與Reporting Services 2000一起) - 所以很有可能我對這個顯而易見的解決方案一無所知:-)請讓我知道!

感謝您提供任何提示,指向Reporting Services上的優秀文章或博客,以及任何幫助!

馬克

回答

2

通常的方法是從主報表參數(如日期範圍)傳遞給子報表,然後子報表打理一切的。爲了提高性能,請查看您是否可以從緩存或快照渲染子報表。高速緩存存儲的報告結合傳遞的參數,所以在第一次「數據庫命中」之後,實際上可能會從高速緩存返回一些或大部分子報表。

+0

謝謝 - 我希望找到另一種方式,但看起來真的沒有多少我可以在這裏做,除了傳遞參數和查詢每個子報表中的數據分開。 – 2009-11-20 13:51:19

0

如果參數您所需要的最終數據,那麼就使用它們,在報表創建一個虛擬數據集 - 你可以只是「選擇1作爲虛擬」的SQL(這是假設的子報告有從另一個不同的佈局)

或者你也許可以重新考慮具有函數或表函數的'master'數據集?

它仍然會對sql服務器徵稅,但至少它會在一次打擊中做到這一點,並且RS盒子上的漏洞會少一些。

1

我掙扎着同樣的問題。但是有一種方法可以使用「緩存共享數據集」實現合理的性能。基本上,子報表將使用包含所有子報表的所有行的較大數據集。通過使用「數據集過濾器」,每個子報表都可以正確地過濾出行。 但是,這僅適用於2008版本。